Docker를 사용하여 PHP 애플리케이션을 배포하는 방법: 1. 기본 PHP 웹 프로젝트 사이트1를 만들고 이를 이미지에 패키징합니다. 2. 이미지에 내장된 PHP 웹 서버를 사용하여 외부 서비스를 제공합니다. 호스트에서 컨테이너의 작업 디렉터리로 로드합니다. 4. fpm 모드에서 PHP를 실행합니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, Docker 버전 20.10.11, Dell G3 컴퓨터.
Docker로 PHP 애플리케이션을 배포하는 방법은 무엇입니까?
Docker를 사용하여 PHP 애플리케이션 패키징 및 배포
프로젝트 개발이 점차 완료되면 대규모 클러스터 배포, 반복적인 환경 설치, 구성 및 소스 코드 업로드 작업을 준비해야 하지만 어렵지 않습니다. , 지루하고 지루하며 비효율적입니다. 프로젝트 릴리스 버전이 해당 도커 이미지에 패키징되어 있으면 이미지를 가져오고, 컨테이너를 생성하고, 각 애플리케이션 서버에서 컨테이너를 시작하기만 하면 됩니다(3줄의 매우 간단한 명령, Walle, Jenkins는 이를 쉽고 완전하게 자동화할 수 있습니다.)
PHP 프로젝트를 도커 이미지로 패키징하는 방법을 알아봅시다.
간단한 PHP 도커 이미지
기본 PHP 웹 프로젝트 사이트1를 생성하여 이미지에 패키징하고, 이미지에 내장된 PHP 내장 웹 서버를 활용하여 외부 서비스를 제공합니다.
# 创建项目 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
확장 설치
php docker 이미지는 기본적으로 debian을 시스템으로 사용하는데, 이는 상대적으로 크기가 더 작은 알파인 이미지를 대신 사용할 수 있습니다. 다음으로 swoole/redis 확장을 설치합니다(일반적으로 사용되는 다른 확장, 공식 PHP 이미지가 설치되었습니다).
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"]
패키지 이미지
docker build -t php-site2:1.0.0 . docker images
컨테이너 만들기
# 创建容器 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/
호스트의 프로젝트를 매핑하려면
docker run -it -d \ -p 80:80 -v $PWD:/apps/site2 --name php_site2_1.0.0 php-site2:1.0.0
호스트의 프로젝트 디렉터리를 컨테이너의 작업 디렉터리에 마운트하면 됩니다. 컨테이너를 런타임 환경으로 사용하는 것과 같습니다.
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가 fpm 모드에서 실행 중이면 apline OS
docker run -it -d \ --name php-fpm-alpine \ -p 9000:9000 \ php:7.2-fpm-apline
를 선택할 수 있습니다. 권장 학습: "PHP 비디오 튜토리얼"
위 내용은 Docker를 사용하여 PHP 애플리케이션을 배포하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!