簡體   English   中英

如何在 docker 上運行 PHP 腳本?

[英]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 腳本。

  1. 創建簡單的 php 腳本:

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

  2. 運行泊塢窗:

    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/

許多答案建議為此使用 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

查看: 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM