当前位置: 首页 > news >正文

docker创建Webman + MySQL + Nginx容器

目录结构
webman-project/
├── docker-compose.yml
├── Dockerfile # Webman 的 PHP 容器镜像
├── nginx.conf
├── php/ # 存放 PHP 项目代码
│ ├── public/
│ ├── app/
│ ├── start.php
│ └── …
└── mysql_data/ # MySQL 数据持久化目录

  1. docker-compose.yml
version:'3.8'services:# Nginx(反向代理 + 静态资源)nginx: image: nginx:alpine container_name: webman-nginx ports: -"80:80"-"443:443"volumes: - ./nginx.conf:/etc/nginx/conf.d/default.conf - ./php/public:/var/www/html/public# Webman 的 public 目录depends_on: - webman networks: - webman-net# PHP 容器(运行 Webman)webman: build:.# 使用当前目录的 Dockerfilecontainer_name: webman-app ports: -"8787:8787"# 可选:直连访问 Webman 调试volumes: - ./php:/var/www/html# 项目代码挂载进去environment: -APP_ENV=production depends_on: - mysql networks: - webman-net command:["php","start.php","start"]# 启动 Webman# MySQL 数据库mysql: image: mysql:8.0 container_name: webman-mysql ports: -"3306:3306"environment: 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-server=utf8mb4 --collation-server=utf8mb4_unicode_ci networks: webman-net: driver: bridge
  1. Dockerfile(PHP 8.1 容器)
FROM php:8.1-cli-alpine# 安装系统依赖 + Webman 必需的 PHP 扩展RUN apk update&&apkadd--no-cache\git\unzip\&&docker-php-ext-install -j$(nproc)\pcntl\posix\pdo_mysql\&&apk clean# 安装 ComposerCOPY--from=composer: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"]
  1. nginx.conf
upstream 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-Control"public, immutable";}# 动态请求转发给 Webmanlocation /{try_files$uri@proxy;}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;}}
  1. Webman 数据库配置(连接 MySQL)
    在 php/config/thinkorm.php 中配置数据库连接(以 ThinkORM 为例):
return['default'=>'mysql','connections'=>['mysql'=>['type'=>'mysql','host'=>'mysql',// 容器名,Docker 内部 DNS'port'=>3306,'database'=>'webman_db','username'=>'webman_user','password'=>'webman_pass','charset'=>'utf8mb4','collation'=>'utf8mb4_unicode_ci',],],];
  1. 启动完整环境

1. 创建项目目录

mkdir webman-project && cd webman-project
mkdir php mysql_data

2. 创建上面 4 个文件(docker-compose.yml, Dockerfile, nginx.conf, php/…)

3. 构建并启动

docker-compose up -d --build

4. 查看状态

docker-compose ps

5. 查看 Webman 日志

docker-compose logs -f webman

http://www.jsqmd.com/news/892492/

相关文章:

  • 新手教程使用Python和OpenAI兼容协议一分钟接入Taotoken调用模型
  • 掌握timedatectl:从时区管理到NTP同步的Linux系统时间配置实战
  • 免费AI助力JeeSite手机端重构:零成本工作流破传统开发难题
  • scrapy 框架问题解决 AttributeError: module ‘OpenSSL.SSL‘ has no attribute ‘SSLv3_METHOD‘
  • 5分钟快速上手:碧蓝航线Alas自动化脚本终极指南
  • 看门狗机制:从锁过期到自动续期的工程实践——Redisson分布式锁的生命线
  • 不止是截图!用AssetStudio深度挖掘《碧蓝档案》bundle文件里的宝藏立绘与UI
  • 5月26号
  • 如何发布一场投票评选活动,一步步教你搞定 - 投票小程序
  • Obsidian 是什么?本地双链笔记工具完整指南(2026)
  • 免费英雄联盟回放播放器终极指南:永久解决版本兼容问题
  • 服务10万+企业、覆盖全球230国+,飞鸽传书凭什么被选择? - 资讯速览
  • 如何进行链接投票活动,全套线上投票制作 - 投票小程序
  • 实验方法详解:细胞热迁移实验(CETSA)标准化操作流程
  • 初学frida
  • 终极指南:如何用Python一键解包10+种Android ROM格式
  • AI智能配乐软件哪个好?5款主流工具对比评测
  • 2026北京朝阳区居民搬家公司排名推荐|本地口碑靠谱榜单 - 余小铁
  • 2026 德国进口橱柜推荐榜单:权威排行与深度选购指南 - GrowthUME
  • Linux下安装Chrome的坑与填坑记录
  • D1207UK,最小10dB增益及低噪声的功率晶体管
  • 人社部生殖健康咨询技术培训,专业守护生殖健康 - 深鉴新闻
  • Windows 10 / Win10蓝牙已关闭,蓝牙开关消失,设备管理器找不到蓝牙选项
  • Lovable农业监测系统数据异常诊断手册(2024最新版):92%的误报源于这3类配置漏洞
  • 【AI Agent云原生架构实战指南】:20年架构师亲授5大不可绕过的Service Mesh集成陷阱与3步落地法
  • 【亿级电商架构实战】开篇:淘宝、京东、拼多多三大顶级电商架构深度拆解,看懂大厂10年架构取舍
  • css属性
  • 高光谱图像分类:融合张量嵌入与图半监督学习应对小样本挑战
  • 视频智能分析终极指南:让AI自动整理你的视频内容精华
  • AI记忆系统如何解决多义词歧义:语境锚定技术实践