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

标签 php rest docker slim

我目前正在使用 Slim 框架开发 RESTful API,并尝试在 Docker 容器上运行它。然而问题是,该脚本只运行一次,然后自动从 docker 退出,退出代码为 0,即它捕获对 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 服务器在第一个请求后不会退出,但它仍然运行并监听其他请求。

提前谢谢您!

最佳答案

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

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

在本例中,我正在安装 Apache 的 PHP mods 并在前台运行网络服务器。以下是此 Dockerfile 的构建命令示例:

docker build -t "myApache" .

现在我有了一个镜像,我可以使用以下运行命令运行容器:

docker run -p 8080:80 -p 4433:443 --name my_web_server -P -d myApache

运行此程序后,您应该能够访问端口 8080 ( http://localhost:8080 ) 上的 Web 服务器

关于php - Docker容器在运行php代码后立即退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47641244/

相关文章:

php - 截至目前,它只是忽略了 if 语句并给了他们 everytime.php、mysql、If else

ios - AFNetworking 500 响应正文

javascript - 使用 Firefox 从 JavaScript 调用 REST API 不起作用

javascript - JSnice 如何进行重命名 Javascript 变量的 STATISTICAL RENAMING?

php - 如何在 PhalconPHP 中实现单个表列的多个条件

php - 如何用 PHP 解密 iPhone 加密的 AES256 文本

javascript - 多个 AJAX 请求乱序

r - 使用 Dockerfile 安装 R 包

docker - Docker镜像备份

docker - 如何获取docker镜像的所有可用环境变量?