Dockerfile以复制文件
我正在编写一个Dockerfile来创建一个具有基本http身份验证的nginx映像。我需要复制本地nginx.conf文件和一个包含登录信息的文件(htpasswd),并将其写入Dockerfile,但它似乎不起作用。当我查看容器中的nginx.conf时,它仍然是默认的,并且网页上没有身份验证功能。帮忙Dockerfile以复制文件,docker,nginx,Docker,Nginx,我正在编写一个Dockerfile来创建一个具有基本http身份验证的nginx映像。我需要复制本地nginx.conf文件和一个包含登录信息的文件(htpasswd),并将其写入Dockerfile,但它似乎不起作用。当我查看容器中的nginx.conf时,它仍然是默认的,并且网页上没有身份验证功能。帮忙 FROM nginx:latest ADD ./gilbard /usr/share/nginx/html COPY ./nginx.conf /etc/nginx/nginx.conf
FROM nginx:latest
ADD ./gilbard /usr/share/nginx/html
COPY ./nginx.conf /etc/nginx/nginx.conf
COPY ./htpasswd /etc/nginx/conf.d/.htpasswd
# Expose port
EXPOSE 80
你的方法是正确的 如果工作目录中不存在
COPY
文件,则生成将生成错误
也许您的build | run命令有错误,请将这些添加到您的问题中
我能够重新编写您的问题,并且正确复制了我的nginx.conf
更多信息。/nginx.conf
你好,弗雷迪
docker build--tag=58188265--file=./Dockerfile。
docker运行——交互式——tty 58188265/bin/sh-c“more/etc/nginx/nginx.conf”
你好,弗雷迪
nginx.conf文件本地存储在/etc/nginx/nginx.conf中,至少存储在ubuntu机器上
看起来您的dockerfile正在使用dockerfile的当前位置复制nginx.conf
您是否将nginx.conf存储在与Dockerfile相同的目录中
换句话说,您的副本应该如下所示:
COPY /etc/nginx/nginx.conf /etc/nginx/nginx.conf
但是,此操作可能存在权限问题。我不太确定,但试试看
另一种选择是:
sudo docker cp /etc/nginx/nginx.conf container_id:/etc/nginx/nginx.conf
原来我还在使用以前的图像来构建容器,谢谢!这个答案有误导性。
COPY
命令的源是到生成上下文的相对路径,而不是到主机文件系统的相对路径。如前所述,“使用Dockerfile的当前位置”是指生成上下文,而不是主机文件系统。不要认为这有误导性——给定的备选方案使用主机路径而不是上下文相关路径。源代码中的/etc
在不同的示例中是两个不同的东西。特别是因为这意味着从带有/
的显式相对路径更改为以/etc
开头的隐式但命名混乱的相对路径,我认为这是误导。它也不能回答这个问题,因为无效路径将导致生成失败,而不是旧文件。生成上下文与Dockerfile的位置也不一样。虽然它们默认位于同一位置,但可以独立配置。