Сборка Docker-compose: Как создать образ для производства и скопировать код приложения в изображение? - PullRequest
0 голосов
/ 21 марта 2019

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. Файл Docker находится в ./docker/nginx, и я не могу с помощью команды COPY скопировать код приложения из папки / docker / nginx.

Когда я запускаю команду сборки, я получаю изображение без контентов приложения в / var / www / html:

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

Как построить изображение в этом случае с моим кодом приложения?

Ответы [ 2 ]

1 голос
/ 21 марта 2019

Вы можете передать dockerfile в аргументе сборки: https://docs.docker.com/compose/compose-file/#dockerfile

Таким образом, я думаю, что вы можете изменить контекст приложения на ./docker, а в Dockerfile скопировать папку приложения в / var / www / html. Таким образом, вам больше не нужно указывать том при запуске приложения.

0 голосов
/ 21 марта 2019

Правильный конфиг выглядит так:

version: '3'

services:

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

И Dockerfile-prod в / docker / nginx

...   

COPY ./app /var/www/html

...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...