Добрый день, прошу совета как организовать процесс разработки, некоего компилируемого приложения, например на плюсах. У приложения есть зависимости, которые нужно сохранить как для develop версии так и для production. Develop версия должна еще содержать разные утилиты, такие как valgrind, dbg и т.п
1. Создаем общий образ:
FROM ubuntu
# установка gcc как пример некой зависимости для приложения
# в реальном проекте там будут библиотеки и т.п
RUN apt install gcc
билдим его:
docker build -t common_image .
2. Дальше нам нужен develop образ:
FROM common_image
# ставим утилиты для разработки
RUN apt install valgrind
В develop версии нам надо править исходный код, для этого нужно подключать тома, тут как я понял удобно использовать будет docker-compose:
# docker-compose.develop.yml
version: "3"
services:
develop:
build: ./develop
volumes:
- ./src:/src
Для разработки выполняем команду:
docker-compose -f docker-compose.develop.yml run -it develop bash
Попадаем в контейнер в котором можем пересобирать приложение и использовать отладочные утилиты.
3. Для релиза создаем production образ:
FROM common_image
# с хост машины копируем исходники в новый контейнер
COPY ./src ./src
# собираем приложение из исходников
# опускам моменты с созданием WORKDIR и прочего
RUN make
так же билдим этот контейнер:
docker build -t release_image .
Отправляем его на боевой сервер (или через push/pull) и там запускам с помощью docker-compose:
version: "3"
services:
develop:
image: release-image
command: ./run_app
volumes:
# тома для настроек
- ./settings:/settings
restart:
always
Оправдан ли такой способ? Сам с докером только начал разбираться поэтому прошу совета у опытных людей, заранее благодарен.