如何在docker上运行PHP脚本?

efzxgjgh  于 2022-10-30  发布在  PHP
关注(0)|答案(5)|浏览(235)

我有索引。php:

<?php
echo "Hello World";
?>

来自网站的停靠文件:https://docs.docker.com/samples/library/php/

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”,但我的应用程序在http://localhost:7000/中无法工作,这是为什么?

wgx48brx

wgx48brx1#

如果您希望使用php-cli“动态”运行某个脚本,则可以创建容器,并在脚本执行后立即删除它。
只需转到包含代码的目录并运行:

Unix系统

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

窗口-命令

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

Windows -电源外壳

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是将在创建容器之后执行的命令

gcuhipw9

gcuhipw92#

您可以保留与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

除了端口Map(-p 7000:80)之外,您所做的一切都是正确的,因为您没有运行Web服务器,所以不需要该端口Map。
==编辑
如果要将其作为Web服务器运行,请使用以下Docker文件:

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脚本。

9cbw7uwe

9cbw7uwe3#

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/

u5rb5r59

u5rb5r594#

很多人都建议使用Apache,但这不是必须的。你需要让容器中的应用程序在特定端口上连续运行。你可以保留php:7.2-cli镜像,但你的CMD应该不同:
CMD [ "php", "-S 0.0.0.0:80", "./index.php" ]
这将运行内置的PHP Web服务器,然后您可以使用已经拥有的docker run命令公开它

xxb16uws

xxb16uws5#

下面是一个快速简单的示例,在Windows 11上使用Docker,假设您的目录结构与下面的示例类似:

C:\Users\YourName\Workspace\MyProject\program.php

program.php具有以下内容:

<?php echo "It works!"; ?>

然后,在命令提示字符中,巡览至项目目录:

cd C:\Users\YourName\Workspace\MyProject

使用CLI运行

docker run --rm -p 8080:8080 -v %CD%:/cli php:7.4-cli php -S 0.0.0.0:8080 /cli/program.php

视图:http://localhost:8080

与服务器一起运行

docker run --rm -d -p 8081:80 -v %CD%:/server --mount type=bind,source="%CD%",target=/var/www/html php:apache

视图:http://localhost:8081/program.php
然后,您可以随意修改program.php并刷新页面。

环境

  • Docker版本20.10.16,内部版本aa7e414
  • Windows 11家庭版,版本22H2,操作系统内部版本号22622.436

相关问题