【发布时间】:2018-04-20 22:47:26
【问题描述】:
我不希望我的nginx docker镜像有/etc/nginx/conf.d/default.conf所以我写了一个简单的nginx dockerfile,主要是添加RUN rm /etc/nginx/conf.d/default.conf
令我惊讶的是,它不起作用。 /etc/nginx/conf.d/default.conf 还在。
为什么以及如何删除它?
我的码头文件:
FROM nginx:latest
# Copy custom configuration file from the current directory
RUN rm /etc/nginx/conf.d/default.conf
COPY nginx.conf /etc/nginx/nginx.conf
COPY conf.d/node2 /etc/nginx/conf.d/node2
EXPOSE 80 8080
我的 docker-compose.yml 为 nginx 服务添加了一个名字 volumn
volumes:
- conf:/etc/nginx/conf.d
更新:
我终于发现是因为我在 docker-compose.yml 中创建了一个名称卷,它创建了/etc/nginx/conf.d/default.conf,所以 dockerfile 中的 rm 根本不起作用。但是为什么创建名称卷会导致创建 `/etc/nginx/conf.d/default.conf ?
更新2:
有了第二个答案,我终于弄清楚了原因。所以RUN rm /etc/nginx/conf.d/default.conf 确实有效。问题是我在运行RUN rm /etc/nginx/conf.d/default.conf 之前创建的docker-compose.yml 中使用了一个卷,并且该卷具有default.conf。
事情是这样的,我先用了一个不带rm的dockerfile并运行docker-compose up,然后我添加了rm重建镜像并再次运行docker-compose up。但我从不更改我的 docker-compose.yml 或清理我的音量。所以无论我如何构建/重建我的图像,文件都在那里。
在我删除所有旧卷(使用 docker volume rm docker volume ls -q -f dangling=true)后,它终于可以工作了。
我把我的问题留在这里而不是删除它,以防其他人可能会像我一样犯同样的错误:$
【问题讨论】:
-
如果您尝试使用自定义的
conf文件运行nginx,https://hub.docker.com/_/nginx/ 中有一个部分会告诉您如何正确操作。 -
谢谢。但是我只是想摆脱/etc/nginx/conf.d/default.conf,我在hub.docker.com/_/nginx中没有找到如何做到这一点
-
我很抱歉,但这一点都不清楚。官方的 nginx 镜像有 default.conf 文件,无论你从哪个操作系统运行它都没有关系。我怀疑您没有推送您对注册表中的图像所做的更改。
-
我很确定我推送了它并且文件仍然存在。这就是为什么我首先问这个问题
-
我尝试在 AWS ECS 和 Azure 上推送图像。结果相同。你可以发布你的 Dockerfile 吗? docker-compose 文件也会有所帮助
标签: docker nginx dockerfile