如何设置dockerfle运行nohup php test.php>;myscript.log 2>&;一,;

如何设置dockerfle运行nohup php test.php>;myscript.log 2>&;一,;,php,docker,dockerfile,Php,Docker,Dockerfile,如何设置dockerfile运行nohup php test.php>myscript.log 2>&1& 我的dockerfile FROM php:5.4-apache RUN docker-php-ext-install sockets WORKDIR /var/www/html/ COPY ./ ./ EXPOSE 8005 80 443 RUN bash -c "nohup php interfacegps.php >myscript.log 2>&1 &

如何设置dockerfile
运行nohup php test.php>myscript.log 2>&1&

我的dockerfile

FROM php:5.4-apache
RUN docker-php-ext-install sockets
WORKDIR /var/www/html/

COPY ./ ./
EXPOSE 8005 80 443
RUN bash -c "nohup php interfacegps.php >myscript.log 2>&1 &"

如何在dockerfile上设置nohup php interface egps.php?我的代码不工作。

Docker映像从不包含正在运行的进程,它只有启动容器所需的文件系统和元数据。当容器启动时,它运行它的任何命令,一旦该命令完成,容器就会退出。在shell上下文中,如果您运行一个类似于所显示的
nohup
命令的命令,并得到一个shell提示符,这将是Docker容器退出的信号

您可能希望
php
命令成为图像的CMD(容器启动时运行的命令)。它必须是前台进程,否则容器将退出。您不希望尝试将其日志重定向到此处,否则它们将被捕获到容器内的文件中,这很难检索。最后,这里不需要
bash-c
包装器,因为Docker会在CMD行中自动为您提供包装器。那就只剩下你一个人了

CMD php interfacegps.php
最简单的运行方法是使用
docker run-d
选项在后台启动容器,然后稍后使用
docker log
查看日志

docker run--name接口gps-d。。。我的形象
docker日志接口gps
如果您真的愿意,您可以在前台启动容器,并以与您在运行行中尝试的相同方式捕获其输出

nohup docker运行--rm myimage>myscript.log 2>&1&

理想情况下,使用类似supervisord的程序在docker容器中运行多个服务:这对我来说是可行的,但我有一个新问题,当我在docker文件中放入代码“CMD php interfacegps.php”(websocket run port 8005)时,我的容器运行2端口是80和8005,端口80不工作,但如果我没有放入代码“CMD php interfacegps.php”,端口80工作