>운영 및 유지보수 >Docker >Docker를 사용하여 PHP 애플리케이션을 배포하는 방법

Docker를 사용하여 PHP 애플리케이션을 배포하는 방법

藏色散人
藏色散人원래의
2022-11-22 10:06:215211검색

Docker를 사용하여 PHP 애플리케이션을 배포하는 방법: 1. 기본 PHP 웹 프로젝트 사이트1를 만들고 이를 이미지에 패키징합니다. 2. 이미지에 내장된 PHP 웹 서버를 사용하여 외부 서비스를 제공합니다. 호스트에서 컨테이너의 작업 디렉터리로 로드합니다. 4. fpm 모드에서 PHP를 실행합니다.

Docker를 사용하여 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([
    &#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"]

패키지 이미지

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.