Подтвердить что ты не робот

Docker-compose для только определенных контейнеров

У меня есть docker-compose.yml, который содержит несколько контейнеров. Три из них предназначены для моего приложения (клиент, сервер и база данных), а остальные - для различных инструментов dev (например, psql, npm, manage.py и т.д.). Когда я делаю docker-compose up, все они запускаются, но я хочу, чтобы начались только три основных. Из-за ссылок, которые я указал, я могу запустить только эти три с помощью docker-compose up client, но затем вывод будет только из одного контейнера. Итак, есть ли способ сделать одно из следующего:

  • Сообщать, что докеры должны составлять контейнеры, начиная с docker-compose up
  • Получить вывод из всех связанных контейнеров из docker-compose up client
4b9b3361

Ответ 1

Вы можете запускать контейнеры, используя:

$ docker-compose up -d client

Это приведет к запуску контейнеров в фоновом режиме, и вывод будет доступен из

$ docker-compose logs

и он будет состоять из всех загруженных вами контейнеров.

Ответ 2

Обычно вы этого не хотите. С помощью Docker Compose вы определяете службы, которые составляют ваше приложение. npm и manage.py являются только командами управления. Им не нужен контейнер для них. Если вам нужно, скажем, создать таблицы базы данных с помощью manage.py, все, что вам нужно сделать, это:

docker-compose run client python manage.py create_db

Подумайте об этом как о разовом диносе, используемом Heroku.

Если вам действительно нужно рассматривать эти команды управления как отдельные контейнеры (а также использовать Docker Compose для них), вы можете создать отдельный файл .yml и запустить Docker Compose со следующей командой:

docker-compose up -f my_custom_docker_compose.yml