Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Docker-入口点脚本导致重新启动_Php_Docker_Docker Compose - Fatal编程技术网

Php Docker-入口点脚本导致重新启动

Php Docker-入口点脚本导致重新启动,php,docker,docker-compose,Php,Docker,Docker Compose,我对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:fixture

我对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已
重新启动:除非按照方式指定停止

我想知道其中一个命令是否以非零代码退出,因此尝试将
exit 0
添加到脚本末尾,但没有效果

我是在做傻事吗?要明确的是,我希望这个脚本在容器的第一次启动时自动运行(如果它以值得的方式运行每一次启动,而不仅仅是第一次启动,那就好了)

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


因此,您需要指定php fpm的入口点,甚至sleep都可以解决此问题。

使用
exec“$@”
结束入口点脚本,使其作为主容器进程运行CMD,这通常是一种有用的模式。如果您不这样做,那么标准的调试技巧,如
docker run--rm-it imagename/bin/sh
就不起作用了。谢谢-将
php fpm
添加到脚本末尾就完成了这项工作。