如何在Docker上运行PHP脚本?

时间:2019-01-14 13:09:17

标签: php docker

我有index.php:

<?php
echo "Hello World";
?>

来自网站JNI documentation

的Dockerfile
FROM php:7.2-cli
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
CMD [ "php", "./index.php" ]

我构建映像并运行容器:

docker build -t my-php-app .
docker run -p 7000:80 --rm --name hello-world-test my-php-app

我仅看到文本“ Hello World”,但是我的应用程序在https://docs.docker.com/samples/library/php/为什么不起作用?

4 个答案:

答案 0 :(得分:2)

  1. 创建简单的php脚本:

    echo '<?php echo "Working";' > my.php

  2. 运行docker:

    docker run -p 8080:8080 --rm -v $(pwd):$(pwd) php:7.4-cli php -S 0.0.0.0:8080 $(pwd)/my.php

  3. 在浏览器中打开:

    http://localhost:8080/

答案 1 :(得分:1)

您可以保留与php:7.2-cli,相同的基本图像:

FROM php:7.2-cli
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
CMD [ "php", "./index.php" ]

构建图像:

docker build -t my-php-app .

运行它:

docker run --rm --name hello-world-test my-php-app

您将获得:

Hello World

您所做的一切都是正确的,除了端口映射(-p 7000:80)并不是必需的,因为您不需要运行Web服务器。

==编辑

如果要将其作为Web服务器运行,请使用以下Dockerfile:

FROM php:7.2-apache
COPY . /var/www/html/

构建它:

docker build -t my-php-app .

并运行它:

docker run -p 8080:80 -d my-php-app

然后您将在8080上运行PHP脚本。

答案 2 :(得分:1)

如果您想使用php-cli“即时”运行某些脚本,则可以创建容器并在脚本执行后立即将其删除。

只需转到包含代码的目录并运行:

Unix

docker container run --rm -v $(pwd):/app/ php:7.4-cli php /app/script.php

Windows-cmd

docker container run --rm -v %cd%:/app/ php:7.4-cli php /app/script.php

Windows-Power Shell

docker container run --rm -v ${PWD}:/app/ php:7.4-cli php /app/script.php

--rm将在执行后删除容器

-v $(pwd):/app/将挂载当前目录

php:7.4-cli是图片

php /app/script.php是创建容器后将执行的命令

答案 3 :(得分:0)

许多答案建议为此使用Apache,但这不是必需的。您需要使容器中的应用程序在特定端口上连续运行。您可以保留php:7.2-cli图片,但您的CMD应该不同:

CMD [ "php", "-S 0.0.0.0:80", "./index.php" ]

这将运行内置的PHP网络服务器,然后您可以使用已经拥有的docker run命令公开它