Docker-compose build:如何构建用于生产的映像并将应用程序代码复制到映像?

时间:2019-03-21 10:31:46

标签: docker docker-compose

https://docs.docker.com/compose/production/

  

删除应用程序代码的所有卷绑定,以使代码保持不变   在容器内部,并且不能从外部更改

我想用我的应用程序代码构建用于生产的图像。

我有一个文件 docker-compose-prod.yml

version: '3'

services:

    ------
    nginx:
        build:
            context: ./docker/nginx
        image: my_nginx:v1     
        ports:
            - 80:80
        volumes:
            - ./docker/app:/var/www/html
        depends_on:
            - php
   ------  

我的应用程序代码位于./docker/app中。 Dockerfile位于./docker/nginx中,我无法使用COPY命令将应用程序代码复制到/ docker / nginx文件夹之外。

当我运行构建命令时,在/ var / www / html中,我得到一个没有应用程序竞争的图像:

docker-compose -f docker-compose-prod.yml build

在这种情况下,如何使用我的应用代码构建图像?

2 个答案:

答案 0 :(得分:1)

您可以在build参数中传递dockerfile:https://docs.docker.com/compose/compose-file/#dockerfile

这样,我认为您可以将应用程序上下文更改为./docker,然后在Dockerfile中将应用程序文件夹复制到/ var / www / html。这样,您在启动应用程序时不再需要指定音量。

答案 1 :(得分:0)

正确的配置如下:

version: '3'

services:

    ------
    nginx:
        build:
            context: ./docker
            dockerfile: nginx/Dockerfile-prod
        image: my_nginx:v1     
        ports:
            - 80:80
   ------  

/ docker / nginx中的Dockerfile-prod

...   

COPY ./app /var/www/html

...