【问题标题】:Docker-compose build: How to build an image for production and copy an app code to image?Docker-compose build:如何构建用于生产的映像并将应用程序代码复制到映像?
【发布时间】:2019-08-12 04:31:34
【问题描述】:

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

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

【问题讨论】:

    标签: docker docker-compose


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      正确的配置如下:

      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
      
      ...
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-03-03
        • 2023-04-04
        • 1970-01-01
        • 2020-12-20
        • 2019-07-05
        • 2022-01-13
        • 2017-06-04
        相关资源
        最近更新 更多