Maison >Opération et maintenance >Docker >Comment déployer une application PHP avec Docker
Comment déployer des applications PHP avec Docker : 1. Créez un site de projet Web PHP de base1 et emballez-le dans l'image ; 2. Utilisez le serveur Web PHP intégré dans l'image pour fournir des services externes ; sur la machine hôte Chargez dans le répertoire de travail du conteneur ; 4. Exécutez php en mode fpm.
L'environnement d'exploitation de ce tutoriel : système Windows 7, Docker version 20.10.11, ordinateur Dell G3.
Comment déployer une application php avec docker ?
Utilisez Docker pour empaqueter et déployer des applications PHP
Lorsque le développement du projet est progressivement terminé, vous devez vous préparer au déploiement de cluster à grande échelle, à l'installation répétée de l'environnement, à la configuration et au travail de téléchargement du code source, bien que ce ne soit pas difficile. , c'est fastidieux, ennuyeux et inefficace, si la version du projet est empaquetée dans l'image docker correspondante, il suffit d'extraire l'image, de créer le conteneur et de démarrer le conteneur sur chaque serveur d'applications (trois lignes de commandes super simples, Walle, Jenkins peut l'automatiser facilement et entièrement).
Voyons comment empaqueter le projet php dans une image Docker.
Image docker php simple
Créez un site de projet Web php de base1, emballez-le dans l'image et utilisez le serveur Web intégré php dans l'image pour fournir des services externes.
# 创建项目 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
Installation étendue
php docker image utilise Debian comme système par défaut, ce qui est relativement grand. Nous pouvons utiliser l'image alpine plus compacte à la place. Ensuite, nous installons l'extension swoole/redis (autres extensions couramment utilisées, l'image php officielle a été installée).
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"]
Image du package
docker build -t php-site2:1.0.0 . docker images
Créer un conteneur
# 创建容器 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/
Si vous souhaitez mapper le projet sur l'hôte, vous pouvez
docker run -it -d \ -p 80:80 -v $PWD:/apps/site2 --name php_site2_1.0.0 php-site2:1.0.0
monter le répertoire du projet sur l'hôte sur le répertoire de travail du conteneur, Cela équivaut à utiliser le conteneur comme environnement d’exécution.
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 fonctionnant en mode fpm, vous pouvez choisir le système d'exploitation apline
docker run -it -d \ --name php-fpm-alpine \ -p 9000:9000 \ php:7.2-fpm-apline
Apprentissage recommandé : "Tutoriel vidéo PHP"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!