如何在Docker上运行PHP脚本?

Ale*_*ski 5 php docker

我有index.php:

<?php
echo "Hello World";
?>
Run Code Online (Sandbox Code Playgroud)

来自网站的Dockerfile:https ://docs.docker.com/samples/library/php/

FROM php:7.2-cli
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
CMD [ "php", "./index.php" ]
Run Code Online (Sandbox Code Playgroud)

我建立映像并运行容器:

docker build -t my-php-app .
docker run -p 7000:80 --rm --name hello-world-test my-php-app
Run Code Online (Sandbox Code Playgroud)

我只看到文本“ Hello World”,但是我的应用程序在http:// localhost:7000 /中不起作用,为什么?

小智 18

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

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

Unix

docker container run --rm -v $(pwd):/app/ php:7.4-cli php /app/script.php
Run Code Online (Sandbox Code Playgroud)

视窗 - cmd

docker container run --rm -v %cd%:/app/ php:7.4-cli php /app/script.php
Run Code Online (Sandbox Code Playgroud)

Windows - 电源外壳

docker container run --rm -v ${PWD}:/app/ php:7.4-cli php /app/script.php
Run Code Online (Sandbox Code Playgroud)

--rm 执行后将移除容器

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

php:7.4-cli 是图像

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

  • 正是我一直在寻找的东西。非常适合测试旧 PHP 版本的简单脚本和行为。谢谢。 (2认同)

Ort*_*kni 13

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

FROM php:7.2-cli
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
CMD [ "php", "./index.php" ]
Run Code Online (Sandbox Code Playgroud)

构建图像:

docker build -t my-php-app .
Run Code Online (Sandbox Code Playgroud)

运行:

docker run --rm --name hello-world-test my-php-app
Run Code Online (Sandbox Code Playgroud)

您将获得:

Hello World
Run Code Online (Sandbox Code Playgroud)

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

== 编辑

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

FROM php:7.2-apache
COPY . /var/www/html/
Run Code Online (Sandbox Code Playgroud)

构建它:

docker build -t my-php-app .
Run Code Online (Sandbox Code Playgroud)

并运行它:

docker run -p 8080:80 -d my-php-app
Run Code Online (Sandbox Code Playgroud)

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


小智 12

\xc2\xa01。创建简单的 php 脚本:

\n
echo \'<?php echo "Working";\' > my.php\n
Run Code Online (Sandbox Code Playgroud)\n

\xc2\xa02。运行码头工人:

\n
docker  run -p 8080:8080 --rm -v $(pwd):$(pwd) php:7.4-cli php -S 0.0.0.0:8080  $(pwd)/my.php\n
Run Code Online (Sandbox Code Playgroud)\n

\xc2\xa03。在浏览器中打开:

\n

http://本地主机:8080/

\n