我的本地文件夹如下所示:
docker-compose.yml
\nginx-proxy
\code
index.html
nginx.conf
Dockerfile
index.html
包含普通的html代码。 nginx.conf
包含以下简单配置:
worker_processes 1;
events {
worker_connections 1024;
}
http {
sendfile on;
server {
listent 80;
root /code;
index index.html;
}
}
Dockerfile
包含以下说明:
FROM nginx:latest
COPY nginx.conf /etc/nginx/nginx.conf
COPY ./code /code
最后docker-compose
包含这些说明:
nginx:
build: ./nginx-proxy
container_name: nginx-proxy
ports:
- "8181:80"
当我运行docker-compose up
并因某种原因转到localhost:8181
时,我会看到一个欢迎的nginx页面(不是我的index.html),但是,如果我稍微更改了docker-compose.yml:< / p>
nginx:
build: ./nginx-proxy
container_name: nginx-proxy
ports:
- "8181:80"
volumes:
- ./nginx-proxy/code:/code
- ./nginx-proxy/nginx.conf:/etc/nginx/nginx.conf
所以,我的问题是为什么我必须指定这个volumes
指令?我希望我可以使用带有COPY指令的Dockerfile。
答案 0 :(得分:1)
通常您不需要它们,直到您想要更改主机上的代码并查看docker容器上的更改。
您的设置看起来不错,您只需要定义构建上下文,如
构建: 上下文:./ nginx -proxy
除此之外,您的COPY语句将像您在构建期间期望的那样正确地复制内容,因此在运行时期间不需要使用卷(除了顶部概述的同步情况)