Heim > Artikel > Betrieb und Instandhaltung > So stellen Sie eine PHP-Anwendung mit Docker bereit
So stellen Sie PHP-Anwendungen mit Docker bereit: 1. Erstellen Sie eine einfache PHP-Webprojekt-Site1 und packen Sie sie in das Image. 2. Verwenden Sie den im Image integrierten PHP-Webserver, um externe Dienste bereitzustellen auf dem Host-Computer in das Arbeitsverzeichnis des Containers laden. 4. PHP im FPM-Modus ausführen.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, Docker-Version 20.10.11, Dell G3-Computer.
Wie stellt man eine PHP-Anwendung mit Docker bereit?
Verwenden Sie Docker, um PHP-Anwendungen zu packen und bereitzustellen.
Wenn die Projektentwicklung schrittweise abgeschlossen ist, müssen Sie sich auf die groß angelegte Clusterbereitstellung, die wiederholte Installation der Umgebung, die Konfiguration und das Hochladen des Quellcodes vorbereiten. Dies ist jedoch nicht schwierig Es ist mühsam, langweilig und ineffizient. Wenn die Release-Version des Projekts in das entsprechende Docker-Image gepackt ist, müssen wir nur das Image abrufen, den Container erstellen und den Container auf jedem Anwendungsserver starten (drei Zeilen mit supereinfachen Befehlen). Walle, Jenkins kann es einfach und vollständig automatisieren).
Lassen Sie uns herausfinden, wie Sie das PHP-Projekt in ein Docker-Image packen.
Einfaches PHP-Docker-Image
Erstellen Sie eine einfache PHP-Webprojekt-Site1, packen Sie sie in das Image und verwenden Sie den im Image integrierten PHP-Webserver, um externe Dienste bereitzustellen.
# 创建项目 mkdir /src/site1 && cd /src/site1 # 写一个简单的 php 页面 vim index.php <?php echo "hello docker"; :wq # 编写项目的 Dockerfile vim Dockerfile # 拉取 php-cli 镜像 FROM php:7.2-cli # copy 项目源文件到镜像 COPY . /apps/site1 # 切换 pwd WORKDIR /apps/site1 # 执行启动命令 使用 php 内置 web 服务器 CMD ["php", "-S 0.0.0.0:80", "-t ./"] :wq # 使用 Dockerfile 创建镜像 site1 版本号为 1.0.0 docker build -t php-site1:1.0.0 . # 查看镜像 docker images # 创建容器 docker run -it -d \ -p 8081:80 \ --name php_site1_1.0.0 \ php-site1:1.0.0 # 查看活动的容器 docker ps # 访问 php 应用 curl -X GET http://localhost:8081/index.php
Erweiterte Installation
php-Docker-Image verwendet standardmäßig Debian als System, das relativ groß ist. Wir können stattdessen das kompaktere Alpine-Image verwenden. Als nächstes installieren wir die Swoole/Redis-Erweiterung (andere häufig verwendete Erweiterungen, das offizielle PHP-Image wurde installiert).
vim server.php
<?php $httpServer = new Swoole\Http\Server("0.0.0.0", 80); $httpServer->set([ 'worker_num' => 1, ]); $httpServer->on("start", function ($server) { echo "Swoole http server is started at http://0.0.0.0:80" . PHP_EOL; }); $httpServer->on("request", function ($request, $response) { // 模拟业务耗时 体验下 swoole 的协程并发 Swoole\Coroutine::sleep(2); $response->header("Content-Type", "text/plain"); $response->end("Hello World"); }); $httpServer->start(); vim Dockerfile FROM php:7.2-cli-alpine # 更新下 apk 的源 RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories RUN apk update && apk upgrade RUN apk add m4 make autoconf gcc g++ linux-headers pcre RUN pecl install swoole \ && pecl install redis RUN docker-php-ext-enable swoole \ && docker-php-ext-enable redis COPY . /apps/site2 WORKDIR /apps/site2 ENTRYPOINT ["php", "server.php"]
Paketbild
docker build -t php-site2:1.0.0 . docker images
Container erstellen
# 创建容器 docker run -it -d \ -p 8082:80 --name php_site2_1.0.0 php-site2:1.0.0 # 查看容器 docker ps # 并发压测 swoole 的协程模式可实现EventLoop异步非阻塞IO ab -c 100 -n 1000 http://localhost:8081/
Wenn Sie das Projekt auf dem Host zuordnen möchten, können Sie
docker run -it -d \ -p 80:80 -v $PWD:/apps/site2 --name php_site2_1.0.0 php-site2:1.0.0
das Projektverzeichnis auf dem Host in das Arbeitsverzeichnis des Containers einhängen. Dies entspricht der Verwendung des Containers als Laufzeitumgebung.
php:7.2-apache php:{PHP_VERSION}-apache,以 Apache + MOD_PHP 模式运行容器。 docker run -it -d \ --name php-mod-alpine \ -p 8083:80 \ -v $PWD:/var/www/html php:7.2-apache
vim index.php
<?php echo "hello docker"; :wq curl -X GET http://localhost:8083/index.php php:7.2-fpm-apline php:{PHP_VERSION}-fpm php:{PHP_VERSION}-fpm-apline
Php läuft im FPM-Modus, Sie können Apline OS wählen
docker run -it -d \ --name php-fpm-alpine \ -p 9000:9000 \ php:7.2-fpm-apline
Empfohlenes Lernen: „PHP Video Tutorial“
Das obige ist der detaillierte Inhalt vonSo stellen Sie eine PHP-Anwendung mit Docker bereit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!