2017-01-12 4 views
0

Когда я запускаю компоновку докеров, он создает контейнер контейнера и postgres.Динамически получить запущенное имя контейнера, созданное docker-compose

Я хочу, чтобы вручную запустить мой Django проверяет, чтобы бежать, через что-то вроде

docker-compose run web python manage.py test 

проблемы это создает новый контейнер (требующий новые миграции, которые должна применяться, домоводство работы и т.д.)

опция Я склоняюсь к ней делать что-то вроде

docker exec -i -t <containerid> python manage.py test 

Это вводит новый вопрос, который является то, что я должен работать docker ps сначала, чтобы захватить имя контейнера. Все дело в том, чтобы автоматически запускать тесты для каждой сборки, поэтому она должна быть автоматизирована, ручное управление docker ps не является решением проблемы.

Итак, есть способ динамически захватить идентификатор контейнера или есть лучший способ сделать это? Это не было бы проблемой, если бы вы могли назначить имена контейнеров в docker-compose

+0

можно назвать контейнер (например) '--name my_container' при запуске. – Niloct

+0

https://docs.docker.com/compose/compose-file/#/containername – Niloct

+0

Я знаю, что вы можете сделать это при запуске отдельного контейнера, но я использую docker-compose – david

ответ

2

Просто используйте docker-compose exec. Он будет выполняться в уже запущенном контейнере, а не запускать новый.

docker-compose exec web python manage.py test 
+0

Это никогда не работало для меня. docker-compose exec web python manage.py test «нет такой команды exec» – david

+0

и docker exec web python manage.py test «Нет такого контейнера: web» – david

+0

@david Какую версию docker-compose вы используете? У меня 1.10.0-rc1, и он поддерживает 'exec' ... –

1

Вы можете присвоить имя контейнера, используя container_name опцию Докер-compose.yml файл.

container_name: container_name

Затем вы можете легко выполнять команды в этом контейнере с помощью.

docker exec container_name python manage.py test.

Дополнительную информацию о вариантах докеры можно найти в официальной документации.

https://docs.docker.com/compose/compose-file/