Heim > Betrieb und Instandhaltung > Docker > So stellen Sie eine PHP-Anwendung mit Docker bereit

So stellen Sie eine PHP-Anwendung mit Docker bereit

藏色散人
Freigeben: 2022-11-22 10:06:21
Original
5240 Leute haben es durchsucht

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.

So stellen Sie eine PHP-Anwendung mit Docker bereit

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
Nach dem Login kopieren

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([
    &#39;worker_num&#39;  => 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 &#39;s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g&#39; /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"]
Nach dem Login kopieren

Paketbild

docker build -t php-site2:1.0.0 .
docker images
Nach dem Login kopieren

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/
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage