Docker容器在运行php代码后立即退出

时间:2017-12-04 20:13:35

标签: php rest docker slim

我目前正在使用Slim框架开发RESTful API,并且我正在尝试在docker容器上运行它。然而,问题是该脚本只运行一次而不是自动从出口代码0退出docker,即它捕获index.php页面的第一个http请求,返回它然后退出。

我敢肯定,必须有一种方法可以在容器上运行apache,这样每次我在本地浏览器上请求特定的URL(如localhost:8080 / api / something)时,在容器中运行的apache服务器将处理这些请求。但是,由于我之前没有使用docker的任何经验,我目前无法解决这个问题。

这是我的Dockerfile:

FROM php:7.0-cli
COPY . /usr/src/my_app
WORKDIR /usr/src/my_app/public
CMD [ "php", "./index.php" ]

这是我的Docker-compose文件:

version: '2'

services:
   app:
      build: ./app
      volumes:
         - ./app:/usr/src/app
      ports:
         - 5001:80

有人可以告诉我如何更改我的Dockerfile或Docker-compose文件,以便apache服务器在第一次请求后不会退出,但它仍会运行并侦听其他请求。

提前谢谢!

1 个答案:

答案 0 :(得分:4)

以下是Apache配置为运行PHP7的映像示例:

11/23/2017  0:02:40
11/24/2017  0:02:33
11/25/2017  0:02:54
11/26/2017  0:02:50
11/27/2017  0:03:01
11/28/2017  0:02:42
11/29/2017  0:03:07
11/30/2017  0:02:42
12/1/2017   0:02:55

在这种情况下,我正在为Apache安装PHP mods并在前台运行webserver。以下是此Dockerfile的构建命令示例:

FROM ubuntu:latest
MAINTAINER webmaster@localhost

RUN apt-get update
RUN apt-get install php php-mysql php-cgi libapache2-mod-php -y


COPY your/web/stuff/ var/www/html/

CMD /usr/sbin/apache2ctl -D FOREGROUND

现在我有了一个图像,我可以用这个运行命令来运行容器:

docker build -t "myApache" .

运行此操作后,您应该能够通过端口8080(http://localhost:8080

访问Web服务器