Docker - ENTRYPOINT脚本导致重新启动

问题描述 投票:0回答:1

我对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"]

我遇到的问题是,当我运行docker-compose build然后运行docker-compose up时,我可以看到脚本运行,但是其中的某些内容导致容器失败并重新启动 - 脚本然后再次运行,循环继续。 docker-compose.yml具有指定的restart: unless-stopped

我想知道其中一个命令是否以非零代码退出,因此尝试将exit 0添加到脚本的末尾,但无济于事。

我做的事情愚蠢吗?为了清楚起见,我希望这个脚本在容器的第一次启动时自动运行(如果每次启动运行它的价值,那就没问题,而不仅仅是第一次)。

php docker docker-compose
1个回答
0
投票

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

为脚本定义入口点时。它运行它,然后它结束,这意味着入口点完成。(所以脚本不执行任何错误)

所以你需要指定php-fpm的入口点,甚至睡眠都会解决这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.