[英]How to run a PHP script on docker?
我有 index.php:
<?php
echo "Hello World";
?>
來自網站的 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" ]
我構建圖像並運行容器:
docker build -t my-php-app .
docker run -p 7000:80 --rm --name hello-world-test my-php-app
我只看到文本“Hello World”,但我的應用程序無法在http://localhost:7000/中運行,為什么?
如果您想使用php-cli
“即時”運行一些腳本,您可以創建容器並在腳本執行后立即將其刪除。
只需轉到包含您的代碼的目錄並運行:
Unix
docker container run --rm -v $(pwd):/app/ php:7.4-cli php /app/script.php
視窗 - cmd
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
是創建容器后執行的命令
您可以保留與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 腳本。
創建簡單的 php 腳本:
echo '<?php echo "Working";' > my.php
運行泊塢窗:
docker run -p 8080:8080 --rm -v $(pwd):$(pwd) php:7.4-cli php -S 0.0.0.0:8080 $(pwd)/my.php
在瀏覽器中打開:
http://localhost:8080/
許多答案建議為此使用 Apache,但這不是必需的。 您需要讓容器中的應用程序在特定端口上持續運行。 您可以保留php:7.2-cli
圖像,但您的 CMD 應該不同:
CMD [ "php", "-S 0.0.0.0:80", "./index.php" ]
這將運行內置的 PHP 網絡服務器,然后您可以使用您已經擁有的 docker run 命令公開它
這是一個在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
使用服務器運行
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
並刷新頁面。
環境
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.