PHP项目容器化改造
随着项目的更新迭代,项目复杂度越来越高,项目已从单一的
PHP
开发演变成多语言
多运行时
的大型项目,进而更新部署也变得繁琐,所有需要一个统一
自动化
的更新部署方案。至此Docker容器化
部署则成为一个好的选择,一、方便各种私有化部署,二、也可以根据各模块压力灵活调整配置。
Dockerfile 简单示例
经过选型,最终选择 webdevops.io
https://github.com/webdevops/Dockerfile
的镜像打包,包含的目前流行的 PHP
版本,同时也提供了 Apache
Nginx
的选择。
公司项目使用 Nginx
PHP8
开发部署的,故选择 webdevops/php-nginx:8.1-alpine
镜像打包。
FROM webdevops/php-nginx:8.1-alpine
# 国内环境 build 建议替换 软件源
# RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g" /etc/apk/repositories
# RUN sed -i "s/dl-4.alpinelinux.org/mirrors.ustc.edu.cn/g" /etc/apk/repositories
# 项目依赖的软件 如 ffmpeg
#RUN apk add ffmpeg
# 项目依赖的PHP扩展
#RUN docker-php-ext-install \
# bcmath \
# ctype \
# fileinfo \
# json \
# mbstring \
# pdo_mysql \
# tokenizer \
# xml
# 项目代码目录
WORKDIR /app
COPY . .
# 项目nginx网站 root目录, 此示例设置为代码的 public 目录
ENV WEB_DOCUMENT_ROOT /app/public
# ENV WEB_DOCUMENT_INDEX index.php # 默认访问文件, 一般不用设置
# ENV SERVICE_NGINX_CLIENT_MAX_BODY_SIZE 50m # Nginx的 client_max_body_size
ENV APP_ENV production
RUN composer install --no-interaction --optimize-autoloader --no-dev
# 镜像模式使用 application:application 该用户组运行 一定要记得
RUN chown -R application:application .
之后 build
镜像运行部署,外置服务访问此容器 80
就可以
配置反对
配置主Web服务器,如 Nginx
Kong
Traefik
等配置反代规则,至此容器化部署改造就完成了。
点击这里查看: 文档链接