Maison >Opération et maintenance >Docker >Comment déployer une application PHP avec Docker

Comment déployer une application PHP avec Docker

藏色散人
藏色散人original
2022-11-22 10:06:215235parcourir

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.

Comment déployer une application PHP avec Docker

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([
    &#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"]

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn