Rumah >Operasi dan penyelenggaraan >Docker >Bagaimana untuk menggunakan aplikasi php dengan docker
Cara untuk menggunakan aplikasi PHP dengan docker: 1. Cipta tapak projek web PHP asas1 dan bungkusnya ke dalam imej 2. Gunakan pelayan web terbina dalam PHP dalam imej untuk menyediakan perkhidmatan luaran; Letakkannya pada mesin hos Pasang direktori projek ke direktori kerja bekas 4. Jalankan php dalam mod fpm.
Persekitaran pengendalian tutorial ini: sistem Windows 7, Docker versi 20.10.11, komputer Dell G3.
Bagaimanakah docker menggunakan aplikasi php?
Gunakan docker untuk membungkus dan menggunakan aplikasi PHP
Apabila pembangunan projek selesai secara beransur-ansur, anda perlu bersedia untuk penggunaan kluster berskala besar, persekitaran berulang pemasangan, konfigurasi dan Walaupun kerja memuat naik kod sumber tidak sukar, ia membosankan, membosankan dan tidak cekap Jika versi keluaran projek dibungkus ke dalam imej docker yang sepadan, kita hanya perlu menarik imej, mencipta bekas dan memulakan bekas. pada setiap pelayan aplikasi ( Dengan tiga baris arahan yang sangat mudah, Walle dan Jenkins boleh mengautomasikannya dengan mudah dan sepenuhnya).
Mari kita fikirkan cara untuk membungkus projek php ke dalam imej docker.
Imej php docker yang ringkas
Buat tapak projek web php asas1, pakejkannya ke dalam imej dan gunakan pelayan web terbina dalam php dalam imej untuk menyediakan perkhidmatan luaran.
# 创建项目 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
Pemasangan lanjutan
Imej php docker menggunakan debian sebagai sistem secara lalai dan kita boleh menggunakan imej alpine yang lebih padat. Seterusnya kami memasang sambungan swoole/redis (sambungan lain yang biasa digunakan, imej php rasmi telah dipasang).
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"]
Imej pakej
docker build -t php-site2:1.0.0 . docker images
Buat bekas
# 创建容器 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/
Jika anda ingin memetakan projek pada hos , anda boleh
docker run -it -d \ -p 80:80 -v $PWD:/apps/site2 --name php_site2_1.0.0 php-site2:1.0.0
untuk melekapkan direktori projek pada hos ke direktori kerja bekas, yang bersamaan dengan menggunakan bekas sebagai persekitaran masa jalan.
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
Untuk php berjalan dalam mod fpm, anda boleh memilih OS apline
docker run -it -d \ --name php-fpm-alpine \ -p 9000:9000 \ php:7.2-fpm-apline
Disyorkan pembelajaran :《tutorial video PHP》
Atas ialah kandungan terperinci Bagaimana untuk menggunakan aplikasi php dengan docker. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!