为什么我必须在docker-compose中使用volume指令

时间:2017-01-16 06:55:37

标签: docker docker-compose dockerfile

我的本​​地文件夹如下所示:

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。

1 个答案:

答案 0 :(得分:1)

通常您不需要它们,直到您想要更改主机上的代码并查看docker容器上的更改。

您的设置看起来不错,您只需要定义构建上下文,如

构建:   上下文:./ nginx -proxy

除此之外,您的COPY语句将像您在构建期间期望的那样正确地复制内容,因此在运行时期间不需要使用卷(除了顶部概述的同步情况)