猿问

容器内的 Symfony Web 服务器在重新启动时导致问题

我在容器内运行 Symfony 应用程序。它运行良好,但是当我重新启动容器时,容器退出并显示代码 0。我只能docker kill container && docker rm container && docker run -d -p 8000:8000 --name container image/path更新容器。


这是我的 Dockerfile 的简化版本


FROM php:7.2

    

RUN docker-php-ext-install pdo pdo_mysql

RUN apt-get update && apt-get install wget -yq && wget https://get.symfony.com/cli/installer -O - | bash && mv /root/.symfony/bin/symfony /usr/local/bin/symfony

COPY . /app

COPY ./php.ini /usr/local/etc/php/

CMD cd /app/ && symfony server:start --no-tls

cmddocker restart container回车docker logs_


[Web Server/PHP ] Jul 24 14:55:28 |INFO | PHP    listening path="/usr/local/bin/php-cgi" php="7.2.31" port=33139

[Web Server/PHP ] Jul 24 14:55:28 |DEBUG| PHP    started

[OK] Web server listening

The Web server is using PHP CGI 7.2.31

http://127.0.0.1:8000

[WARNING] The local web server is already running

Local Web Server

Listening on http://127.0.0.1:8000

The Web server is using PHP CGI 7.2.31

Local Domains

Workers

No Workers

Environment Variables

None

然后,它以代码 0 退出。


所以我尝试在重新启动之前停止 symfony Web 服务器,但它不起作用。我很困惑,因为问题来自 CMD 语句,但我无法真正更改它,因为我需要在运行容器时启动 Web 服务器。一种可能是在另一个 Web 服务器(如 apache)上运行 symfony 应用程序,但使用 symfony Web 服务器非常方便,我不认为这是生产的最佳实践(但这是一个个人项目)。


所以我很困惑为什么它不起作用,如果有人有想法的话


qq_遁去的一_1
浏览 235回答 2
2回答

慕斯709654

好吧,运行 symfony 服务器进行生产是一个坏主意,我只是基于 php-apache 映像创建一个新的 docker 映像,一切都工作得更好

白板的微信

此行为可能是由于 CMD 中的 cd 命令造成的。您应该使用 WORKDIR 代替,并在 CMD 中仅保留服务器启动命令。我还建议使用 docker compose。
随时随地看视频慕课网APP
我要回答