首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:服务‘api-网关’生成失败:添加失败: stat /var/lib/docker/tmp/docker-builder931060141/api-gateway:没有这样的文件或目录

错误:服务‘api-网关’生成失败:添加失败: stat /var/lib/docker/tmp/docker-builder931060141/api-gateway:没有这样的文件或目录
EN

Stack Overflow用户
提问于 2019-04-16 10:19:15
回答 1查看 1.1K关注 0票数 1

我在建立一个以码头为基地的项目上有困难。我的总体目录结构如下:

代码语言:javascript
复制
api-gateway
│  ├─handler
│  └─resource
   --Dockerfile

我的Dockerfile包含:

代码语言:javascript
复制
FROM alpine:3.2
ADD api-gateway /api-gateway
ADD resource/pri_key.pem resource/pub_key.pem /resource/
#ADD resource/ca-certificates.crt /etc/ssl/certs/
VOLUME /resource/
ENTRYPOINT [ "/api-gateway" ]

即使我使用ADD在图像中包含一个文件,我仍然会得到一个错误。api-gateway是一个目录,其中包含Dockerfile

代码语言:javascript
复制
D:\FileWithDocument\ExtraCodeProject\shop-micro-master>docker-compose up
Building api-gateway
Step 1/5 : FROM alpine:3.2
 ---> 98f5f2d17bd1
Step 2/5 : ADD api-gateway /api-gateway
ERROR: Service 'api-gateway' failed to build: ADD failed: stat /var/lib/docker/tmp/docker-builder931060141/api-gateway: no such file or directory

我在Windows中使用Docker桌面。码头引擎版本是:

代码语言:javascript
复制
Client: Docker Engine - Community
 Version:           18.09.2
 API version:       1.39
 Go version:        go1.10.8
 Git commit:        6247962
 Built:             Sun Feb 10 04:12:31 2019
 OS/Arch:           windows/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.2
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.6
  Git commit:       6247962
  Built:            Sun Feb 10 04:13:06 2019
  OS/Arch:          linux/amd64
  Experimental:     true

当我下载github项目并运行docker构建时,它仍然输出此错误。

错误:服务‘api-网关’生成失败:添加失败: stat /var/lib/docker/tmp/docker-builder931060141/api-gateway:没有这样的文件或目录

EN

回答 1

Stack Overflow用户

发布于 2019-04-17 00:12:39

运行docker build时,您提供的目录将成为上下文目录;您只能引用该目录树中的文件路径,并且COPYADD语句中的任何文件路径总是相对于该目录。这意味着,如果您从包含docker build的名为api-gateway的目录运行Dockerfile,则.是同一个目录。您的Dockerfile看起来可能更像:

代码语言:javascript
复制
FROM alpine:3.2

# This will create the directory in the image if it
# doesn't already exist.
WORKDIR /api-gateway

# Copy the entire current directory into the image.
# (Prefer COPY to ADD, unless you specifically want
# automatic archive extraction or HTTP fetches.)
COPY . .

# Copy in some additional files.
# (Remember that anyone who has the image can extract any
# file from it: this leaks a private key.)
COPY resource/pri_key.pem resource/pub_key.pem /resource/
COPY resource/ca-certificates.crt /etc/ssl/certs/

# Set the default command to launch.
# (Prefer CMD to ENTRYPOINT: it is easier to get a debugging
# container with a shell, and there is a useful pattern that
# uses an ENTRYPOINT wrapper to do first-time setup before
# launching the CMD.)
CMD ["/api-gateway/handler"]

如果您看到一个“docker-builder12345678/.:no此类文件或目录”错误,则应该始终将较长的数字之后的路径组件解释为相对于传递给docker build的目录。

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

https://stackoverflow.com/questions/55705837

复制
相关文章

相似问题

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