romanpostovalov
@romanpostovalov
Developer

Как удобнее разрабатывать проект с docker?

Я только начинаю работать со стеком angular, node, mongo и Docker, есть проект, который запускается с разными отдельными контейнерами из образов nginx, redis, mongo и npm само приложение на angular, koa c webpack.

Все это вынесено в небольшой скрипт на bash c разными командами

#!/bin/bash

SERVICE_NAME="web_app"

if [[ $# -eq 0 ]]; then
	docker-compose up -d $@
elif [ $1 = 'restart' ]; then
	docker-compose down && docker-compose up -d $@
elif [ $1 = 'dev' ]; then
	docker-compose -f docker-compose.yml -f docker-compose.dev.yml run --rm --service-ports $SERVICE_NAME npm run dev ${@:2}
elif [ $1 = 'test' ]; then
	docker-compose -f docker-compose.yml -f docker-compose.dev.yml run --rm --service-ports $SERVICE_NAME npm run test ${@:2}
elif [ $1 = 'debug' ]; then
	docker-compose -f docker-compose.yml -f docker-compose.dev.yml run --rm --service-ports $SERVICE_NAME npm run dev:debug ${@:2}
elif [ $1 = 'exec' ]; then
	docker-compose -f docker-compose.yml -f docker-compose.dev.yml run --rm --service-ports $SERVICE_NAME ${@:2}
elif [ $1 = 'i' ]; then
	docker-compose -f docker-compose.yml -f docker-compose.dev.yml run --rm --service-ports $SERVICE_NAME npm i --save ${@:2}
elif [ $1 = 'idev' ]; then
	docker-compose -f docker-compose.yml -f docker-compose.dev.yml run --rm --service-ports $SERVICE_NAME npm i --save-dev ${@:2}
elif [ $1 = 'un' ]; then
	docker-compose -f docker-compose.yml -f docker-compose.dev.yml run --rm --service-ports $SERVICE_NAME npm un -save ${@:2}
elif [ $1 = 'build' ]; then
	docker-compose build "${@:2}" --no-cache
elif [ $1 = 'rebuild' ]; then
	docker-compose build --no-cache
	docker-compose -f docker-compose.yml -f docker-compose.dev.yml run $SERVICE_NAME npm i
	docker-compose -f docker-compose.yml -f docker-compose.dev.yml run $SERVICE_NAME npm run build
else
	docker-compose up -d $@
fi


Все это работает и запускается отлично, как локально под Windows 10, так и на сервере Ubuntu 16.04. Я пришел из мира PHP, и привык, что делая изменения, обновляю броузер и сразу вижу изменения или отладка через дебагер IDE.
Но тут я никак не могу понять, как мне настроить обновление кода проекта при разработке в контейнере приложении.

Допустим, поменял я CSS, JS, написал что то в контроллере или модели или шаблоне, я хочу обновить страницу в броузере и сразу увидеть изменения в запущенном контейнере docker, где помещено приложение, а если мне надо добавить модуль через npm, это каждый раз заходить командой exec в контейнер и запускать внутри команду, а после команд docker-compose down или stop сохранятся ли все изменения?

Получается для каждых изменений, мне надо выполнять команду docker-compose down && docker-compose up -d, чтобы увидеть изменения в контейнере и в броузер? Не совсем понятно и как работать с базой данных в контейнере docker, если надо накатить изменения структуры или обратиться через PhpMyAdmin к базе.

Посоветуйте, как это автоматизировать и лучше понять принципы работы. А впереди еще вопросы бекапа, репликации базы данных в Docker.
  • Вопрос задан
  • 1080 просмотров
Пригласить эксперта
Ответы на вопрос 1
Файлы проекта на dev должны маунтиться из вашей хостовой ОС. Тогда все будет на лету обновляться. По поводу рестарта сервера - можно тот же nodemon взять.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Acme Crypto Corp Нижний Новгород
от 80 000 до 140 000 руб.
Evry Санкт-Петербург
от 2 000 до 2 300 usd.
Simplanum Казань
от 60 000 до 140 000 руб.
22 февр. 2019, в 15:23
3000 руб./за проект
22 февр. 2019, в 15:12
300 руб./в час
22 февр. 2019, в 14:57
800 руб./в час