Я использую docker-compose для разработки. В процессе мне часто нужно собрать 5 контейнеров (1 для веб-сервера и 4 для postgres, redis, mongo и т. д.). Контейнер веб-сервера настроен на включение ссылок на другие контейнеры, он имеет свои собственные переменные ENV, смонтированные тома с хост-компьютера разработки.
Проблема в том, что мне не нужен веб-контейнер для запуска самого сервера. Вместо этого мне нужно выполнить /etc/bash
с параметрами -it
внутри веб-контейнера после создания всех зависимых контейнеров. Вот почему мой dockerfile для веб-контейнера заканчивается:
CMD /bin/true
Очевидно, такой контейнер не будет запущен, поэтому я не могу использовать что-то вроде
docker exec -it <CONTAINER ID> /bin/bash
"войти" в него и запустить node app.js
или какие-то другие задачи.
Любой способ создать контейнер с композицией как часть файла docker-compose.yml
, но запустить /etc/bash с опцией -it позже?
Кстати, я могу вручную запустить отдельный веб-контейнер с помощью
docker run \
--link postgres
--link ...
-e "NODE_ENV=development" \
-e ... \
...
...
..
но в этом случае мне нужно добавлять все ссылки, env vars, тома и т. д. в качестве аргументов каждый раз, когда я собираюсь разрабатывать приложение.