首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Docker映像生成失败,“复制失败:未指定源文件”

Docker映像生成失败,“复制失败:未指定源文件”
EN

Stack Overflow用户
提问于 2020-09-24 18:24:18
回答 1查看 550关注 0票数 1

我试着用Golang构建一个码头形象,但是{"message": "COPY failed: no source files were specified"}," error": "COPY failed: no source files were specified"}失败了

这是我的密码

代码语言:javascript
运行
复制
 package main
 import (
  "archive/tar"
  "bytes"
  "context"
  "fmt"
  "io"
  "io/ioutil"
  "os"

  "github.com/docker/docker/api/types"
  "github.com/docker/docker/client"
 )

func buildImage(client *client.Client, tags []string, dockerfile string) error {
ctx := context.Background()

// Create a buffer
buf := new(bytes.Buffer)
tw := tar.NewWriter(buf)
defer tw.Close()

// Create a filereader
dockerFileReader, err := os.Open(dockerfile)
if err != nil {
    return err
}

// Read the actual Dockerfile
readDockerFile, err := ioutil.ReadAll(dockerFileReader)
if err != nil {
    return err
}

// Make a TAR header for the file
tarHeader := &tar.Header{
    Name: dockerfile,
    Size: int64(len(readDockerFile)),
}

// Writes the header described for the TAR file
err = tw.WriteHeader(tarHeader)
if err != nil {
    return err
}

// Writes the dockerfile data to the TAR file
_, err = tw.Write(readDockerFile)
if err != nil {
    return err
}

dockerFileTarReader := bytes.NewReader(buf.Bytes())

buildOptions := types.ImageBuildOptions{
    Context:    dockerFileTarReader, 
    Dockerfile: dockerfile,
    Remove:     true,
    Tags:       tags,
}
// Build the actual image
imageBuildResponse, err := client.ImageBuild(
    ctx,
    dockerFileTarReader,
    buildOptions,
)

if err != nil {
    return err
}

// Read the STDOUT from the build process
defer imageBuildResponse.Body.Close()
_, err = io.Copy(os.Stdout, imageBuildResponse.Body)
if err != nil {
    return err
}

return nil
}

下面是我的文件夹结构,它试图使用src的Dockerfile构建一个坞映像。我想要考虑所有的文件在src内的码头建设。

代码语言:javascript
运行
复制
-- root
   |-- src 
       |--Dockerfile
       |--files
   |-- go-code
       |--build.go

Dockerfile

代码语言:javascript
运行
复制
FROM node:12


WORKDIR /app
COPY package*.json ./
RUN npm install

COPY . .

EXPOSE 3000

CMD [ "node", "index.js" ]

详细错误信息:

代码语言:javascript
运行
复制
{"errorDetail":{"message":"COPY failed: no source files were specified"},"error":"COPY failed: no source files were specified"}
EN

Stack Overflow用户

发布于 2020-09-25 06:34:53

这取决于你要把你的码头建设从哪里来。就像。

代码语言:javascript
运行
复制
-- root
   |-- src 
       |--Dockerfile
       |--files
   |-- go-code
       |--build.go

如果要复制/root/src/files/中的文件,则需要将cd复制到/root/src文件夹。在这种情况下,docker命令应该是:docker built -t <tagname> .

在你的例子中,第一个“。在COPY命令中,将尝试从运行build.go的目录复制。

这可能就是你的脚本失败的原因。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64052273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档