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 等配置反代规则,至此容器化部署改造就完成了。
点击这里查看: 文档链接