Автоматический запуск команд при docker-compose up laravel, npm, composer
Перечитал огромное количество информации по запуску dockera, получилось поднять nginx + mysql + laravel через docker-compose, но суть в том, что приходится это все вручную прописывать и найти исчерпывающий ответ как лучше и правильно сделать автоматизацию я не нашел. Сейчас развернул докер по данному гайду https://www.digitalocean.com/community/tutorials/how-to-set-up-laravel-nginx-and-mysql-with-docker-compose-ru
Вопрос: каким образом лучше всего добавить автоматическое выполнение команд, при запуске docker-compose up: команды: composer install - для скачивания создание файла .env(параметры поидее можно получить из docker-composer.yml) npm install npm run dev php artisan make migration
Пробовал и через скрипты .sh и напрямую в докере через RUN писать эти команды, но постоянно вываливаются разные ошибки.
Пример makefile:
build: comp justup dock-comp goup
comp: composer install
justup: docker-compose up -d
dock-comp: docker-compose exec app php artisan key:generate docker-compose exec app php artisan config:cache docker-compose exec app php artisan migrate --seed docker-compose exec app php artisan storage:link
goup: docker-compose exec app npm install docker-compose exec app npm run dev docker-compose exec app npm run watch-poll
upwithwatch: docker-compose up -d docker-compose exec app npm run dev docker-compose exec app npm run watch-poll
Ответы (1 шт):
Строго говоря автоматизация это не задача докера. В вашем случае докер как инструмент для подготовки и реализации требуемого окружения разработки и RUN это все же не совсем автоматизация, хотя можно и так сказать... ну не суть.
По поводу автоматизации. Я вот ни разу не говорю про ansible (хотя возможно стоило бы сказать, если бы мы говорили про сложную логику автоматических процессов), но мне показалось интересным нынешнее использование такого инструмента как make, ну или Makefile, если мы говорим в разрезе задачи.
Например вы можете посмотреть простейший пример вот тут , а вот здесь я для вас нашел как раз ваш пример автоматизации для Laravel и именно через докер. Уверен это именно то что вам нужно.