我有索引。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/中无法工作,这是为什么?
5条答案
按热度按时间wgx48brx1#
如果您希望使用
php-cli
“动态”运行某个脚本,则可以创建容器,并在脚本执行后立即删除它。只需转到包含代码的目录并运行:
Unix系统
窗口-命令
Windows -电源外壳
--rm
将在执行后删除容器-v $(pwd):/app/
将挂接当前目录php:7.4-cli
是图像而
php /app/script.php
是将在创建容器之后执行的命令gcuhipw92#
您可以保留与
php:7.2-cli
相同的基本映像:...构建映像:
...运行它:
您将获得:
除了端口Map(
-p 7000:80
)之外,您所做的一切都是正确的,因为您没有运行Web服务器,所以不需要该端口Map。==编辑
如果要将其作为Web服务器运行,请使用以下Docker文件:
...构建它:
...并运行它:
然后,您将在8080上运行PHP脚本。
9cbw7uwe3#
1.创建简单的php脚本:
2.运行Docker:
3.在浏览器中打开:
http://localhost:8080/
u5rb5r594#
很多人都建议使用Apache,但这不是必须的。你需要让容器中的应用程序在特定端口上连续运行。你可以保留
php:7.2-cli
镜像,但你的CMD应该不同:CMD [ "php", "-S 0.0.0.0:80", "./index.php" ]
个这将运行内置的PHP Web服务器,然后您可以使用已经拥有的docker run命令公开它
xxb16uws5#
下面是一个快速简单的示例,在Windows 11上使用Docker,假设您的目录结构与下面的示例类似:
而
program.php
具有以下内容:然后,在命令提示字符中,巡览至项目目录:
使用CLI运行
视图:http://localhost:8080
与服务器一起运行
视图:http://localhost:8081/program.php
然后,您可以随意修改
program.php
并刷新页面。环境