Docker - скрипт ENTRYPOINT вызывает перезагрузку - PullRequest
0 голосов
/ 26 апреля 2019

Я относительно новичок в Docker - я пытаюсь создать систему для запуска приложения Symfony 4, состоящую из PHP-FPM, nginx и MySQL.

Все работает как надо, кроме одной вещи.Когда загружается контейнер PHP-FPM, я хочу запустить:

#!/bin/bash
composer install
bin/console doctrine:database:create --if-not-exists
bin/console doctrine:schema:update --force
bin/console doctrine:fixtures:load --no-interaction

Я создал скрипт с этими командами, а затем отредактировал свой DockerFile следующим образом:

COPY ./docker/php/startup.sh /usr/local/bin/startup.sh
RUN ["chmod", "+x", "/usr/local/bin/startup.sh"]
ENTRYPOINT ["/usr/local/bin/startup.sh"]

Проблема Iу меня есть то, что, когда я запускаю docker-compose build, а затем docker-compose up, я вижу, что скрипт запускается, но что-то в нем вызывает сбой контейнера и перезапускает сам себя - сценарий затем запускается снова, и цикл продолжается.Docker-compose.yml имеет restart: unless-stopped, указанный в пути.

Я подумал, что одна из команд завершается с ненулевым кодом, поэтому попытался добавить exit 0 в конец скрипта,но безрезультатно.

Я что-то делаю глупо?Чтобы было ясно, я хочу, чтобы этот сценарий запускался автоматически при первой загрузке контейнера (это хорошо, если он запускает каждую загрузку столько, сколько он стоит, а не только в самый первый раз).

1 Ответ

0 голосов
/ 26 апреля 2019

https://docs.docker.com/engine/reference/builder/#entrypoint

Когда вы определяете точку входа в ваш скрипт.Он запускает его и после этого завершается, что означает, что точка входа завершена. (Поэтому скрипт не выполняет ошибок)

Так что вам нужно указать точку входа в php-fpm, или даже сон исправит это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...