Задержка Docker Container RUN до тех пор, пока не будет создана среда - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь найти способ отложить запуск док-контейнера, пока задача в ENTRYPOINT не будет завершена. Чтобы объяснить это далее, у меня есть файл Docker, который имеет точку входа

ENTRYPOINT ["bash", "-c", "tox", "-e", "docker-server"]

Когда я запускаю контейнер, используя

Docker run -d -t -p 127.0.0.1:8882:8882 datawarehouse

он сразу же создает контейнер там, где команда tox все еще создает среду. Проблема заключается в том, что, если я немедленно запусту задание cron или сразу же выполню код на python, произойдет сбой, потому что среда tox все еще находится на этапе сборки. Я хочу избежать запуска чего-либо до тех пор, пока задача ENTRYPOINT не будет завершена, это может быть достигнуто в файле Docker или в команде запуска?

Ответы [ 2 ]

0 голосов
/ 14 июня 2019

У меня нет элегантного решения, но вот что я сделал.

RUN <your dependencies>
# Then add a second RUN command with a sleep at the beginning:
RUN sleep 400 && gcloud dataproc jobs submit xxxxxx

Каждая команда RUN будет выполняться на отдельном уровне контейнера на чистом сланце, следовательно, sleep && фактическая команда точки входа собирается вместе как одна логическая команда. Но, как вы можете видеть, это было жестко закодировано, соответственно измените продолжительность сна.

0 голосов
/ 17 мая 2018

да, в файле docker-compose вы можете установить его в спящий режим или определить зависимости.

https://docs.docker.com/compose/startup-order/

https://8thlight.com/blog/dariusz-pasciak/2016/10/17/docker-compose-wait-for-dependencies.html

...