docker创建Webman + MySQL + Nginx容器

docker创建Webman + MySQL + Nginx容器 目录结构webman-project/├── docker-compose.yml├── Dockerfile # Webman 的 PHP 容器镜像├── nginx.conf├── php/ # 存放 PHP 项目代码│ ├── public/│ ├── app/│ ├── start.php│ └── …└── mysql_data/ # MySQL 数据持久化目录docker-compose.ymlversion:3.8services:# Nginx反向代理 静态资源nginx: image: nginx:alpine container_name: webman-nginx ports: -80:80-443:443volumes: - ./nginx.conf:/etc/nginx/conf.d/default.conf - ./php/public:/var/www/html/public# Webman 的 public 目录depends_on: - webman networks: - webman-net# PHP 容器运行 Webmanwebman: build:.# 使用当前目录的 Dockerfilecontainer_name: webman-app ports: -8787:8787# 可选直连访问 Webman 调试volumes: - ./php:/var/www/html# 项目代码挂载进去environment: -APP_ENVproduction depends_on: - mysql networks: - webman-net command:[php,start.php,start]# 启动 Webman# MySQL 数据库mysql: image: mysql:8.0 container_name: webman-mysql ports: -3306:3306environment: MYSQL_ROOT_PASSWORD:123456MYSQL_DATABASE: webman_db MYSQL_USER: webman_user MYSQL_PASSWORD: webman_pass volumes: - ./mysql_data:/var/lib/mysql networks: - webman-net command: --character-set-serverutf8mb4 --collation-serverutf8mb4_unicode_ci networks: webman-net: driver: bridgeDockerfilePHP 8.1 容器FROM php:8.1-cli-alpine# 安装系统依赖 Webman 必需的 PHP 扩展RUN apk updateapkadd--no-cache\git\unzip\docker-php-ext-install -j$(nproc)\pcntl\posix\pdo_mysql\apk clean# 安装 ComposerCOPY--fromcomposer:latest /usr/bin/composer /usr/bin/composer# 设置工作目录WORKDIR /var/www/html# 如果本地还没有 Webman 项目取消下面两行注释全新安装# RUN composer create-project workerman/webman:~2.0 .# RUN composer require workerman/redis workerman/think-orm# 暴露 Webman 默认端口EXPOSE8787# 启动命令注意pid 文件等需要写入权限CMD[php,start.php,start]nginx.confupstream webman{server webman:8787;# 指向 webman 容器端口 8787keepalive10240;}server{listen80;server_name localhost;root /var/www/html/public;# 静态文件直接由 Nginx 处理location ~*\.(jpg|jpeg|png|gif|ico|css|js|svg|woff|woff2|ttf|eot)${expires 30d;add_header Cache-Controlpublic, immutable;}# 动态请求转发给 Webmanlocation /{try_files$uriproxy;}location proxy{proxy_set_header Host$host;proxy_set_header X-Real-IP$remote_addr;proxy_set_header X-Forwarded-For$remote_addr;proxy_set_header X-Forwarded-Proto$scheme;proxy_http_version1.1;proxy_set_header Connection;proxy_pass http://webman;}}Webman 数据库配置连接 MySQL在 php/config/thinkorm.php 中配置数据库连接以 ThinkORM 为例return[defaultmysql,connections[mysql[typemysql,hostmysql,// 容器名Docker 内部 DNSport3306,databasewebman_db,usernamewebman_user,passwordwebman_pass,charsetutf8mb4,collationutf8mb4_unicode_ci,],],];启动完整环境1. 创建项目目录mkdir webman-project cd webman-projectmkdir php mysql_data2. 创建上面 4 个文件docker-compose.yml, Dockerfile, nginx.conf, php/…3. 构建并启动docker-compose up -d --build4. 查看状态docker-compose ps5. 查看 Webman 日志docker-compose logs -f webman