Вариант 1
Что я обычно делаю для уменьшения команд при обработке Docker и Docker Compose в целом, так это использование Makefile .
Итак, в вашем случаеВы можете написать что-то вроде:
Makefile
SUDO := $(shell groups | grep -q docker || echo sudo)
.PHONY: start
start:
$(SUDO) docker-compose build \
&& $(SUDO) docker-compose run cakephp composer install --no-interaction \
&& $(SUDO) docker-compose run cakephp bin/cake migrations migrate \
&& $(SUDO) docker-compose run cakephp bin/cake migrations seed \
&& $(SUDO) docker-compose up
Все, что вам нужно сделать, это поместить этот файл в папку вашего проекта и запустить make start
.
(Часть $(SUDO)
гарантирует, что вы можете запустить это с комфортом даже с пользователем, который не входит в группу docker
.)
Опция 2
На самом деле простозапустите docker-compose up
(возможно, с флагом --build
), вам придется написать небольшой скрипт, который вы COPY
добавляете в образ Docker (вы уже делаете это с COPY . $APP_HOME
- при условии, что вы поместите этот скрипт туда, гдеваш контекст сборки Docker указывает на), а затем используйте его как ENTRYPOINT
.
Что-то вроде этого должно работать для вас.
entrypoint.sh:
#!/bin/sh
set -e
cakephp composer install --no-interaction
cakephp bin/cake migrations migrate
cakephp bin/cake migrations seed
exec "$@"
Inваш Dockerfile, вам нужно будет поставить ENTRYPOINT ["/bin/sh", "entrypoint.sh"]