我想指示 Docker COPY
我的证书来自本地 /etc/
我的 Ubuntu 机器上的文件夹。
我得到错误:
复制失败:在构建上下文中找不到文件或被 .dockerignore 排除:stat etc/.auth_keys/fullchain.pem:文件不存在
我没有排除在 .dockerignore
我该怎么做?
Dockerfile:
FROM nginx:1.21.3-alpine
RUN rm /etc/nginx/conf.d/default.conf
RUN mkdir /etc/nginx/ssl
COPY nginx.conf /etc/nginx/conf.d
COPY ./etc/.auth_keys/fullchain.pem /etc/nginx/ssl/
COPY ./etc/.auth_keys/privkey.pem /etc/nginx/ssl/
WORKDIR /usr/src/app
我也试过没有 dot
–>同样的错误
COPY /etc/.auth_keys/fullchain.pem /etc/nginx/ssl/
COPY /etc/.auth_keys/privkey.pem /etc/nginx/ssl/
通过将文件夹 .auth_keys
放在 Dockerfile 旁边 –> 可以,但不理想
COPY /.auth_keys/fullchain.pem /etc/nginx/ssl/
COPY /.auth_keys/privkey.pem /etc/nginx/ssl/
原文由 Jaco 发布,翻译遵循 CC BY-SA 4.0 许可协议
docker 上下文是 Dockerfile 所在的目录。如果你想构建一个镜像,这是你必须面对的限制之一。
在 本文档 中,您可以看到如何切换上下文,但为了简单起见,只需将同一目录视为上下文。笔记;这也不适用于符号链接。
所以您的观察是正确的,您需要将需要复制的文件放在同一目录中。
或者,如果您不需要复制它们但在运行时仍然可以使用它们,您可以选择挂载。我可以想象这在您的情况下不起作用,因为您可能在容器启动时需要这些文件。