Работая с докером столкнулся с ситуацией, когда мне нужно провести определенный ряд действий для того, чтобы развернуть проект.
Например:
- сбилдить образы докер (docker-compose build)
- установить расширения (composer install)
- дать права на определенные папки логов и тп.
В общем провести ряд манипуляций и под конец запустить приложение. По началу я думал, все эти манипуляции записать в контейнеры, чтобы все выполнялось при билде. Но сразу же стопорнулся на "composer install". После долгого гугления я наткнулся на упоминания о том, что так делать не нужно.
Я прихожу к тому, что хочу написать скрипты для всего этого дело, однако возможно я что-то упускаю или делаю не так.
Подскажите, пожалуйста, куда копать?
Если просто выполнить "composer install" будет ошибка, говорящая, что composer.json не найден.
Его можно попробовать скопировать, но только относительно Dockerfile. Однако проект большой и структура предполагает папки для каждого контейнера. Поэтому необходимо использовать относительный путь и вернуться на 2 шага назад ("../../www"), что на текущий момент невозможно для команд RUN и COPY.
Плюс я облазил около 100 сайтов с упоминаниями об этом.
Далее вопросы остаются с правами и дополнительными манипуляциями включая запуск тестов при первом билде. Одна из проблем, это то, что волюм прокидывается на этапе запуска контейнера, а не на этапе билда.
nepster-web: неправильно работает переход по якорю, в общем юзайте WORKDIR команду, которая устанавливает рабочую директорию для команд RUN, CMD, ENTRYPOINT, COPY и ADD
IceJOKER: она устанавливает рабочую директорию, да все четка.
Но эта директория на момент билда будет пустая, так-как волюм создастся только после UP, а не на этапе BUILD.
Исходя из этого COMPOSER INSTALL кинет ошибку, что не может найти composer.json. Мы можем его скопировать с помощью COPY. НО ТОЛЬКО ЕСЛИ ОН НАХОДИТСЯ В ОДНОЙ ДИРЕКТОРИИ С Dockerfile.
В данном случае, это не мой вариант, поэтому тут ничего не сделать.
В следующем ответе подсказали, про обертку для сборки докера. Смотрю пока в сторону Makefile и своего решения.