### [雨云Docker容器化部署实战:docker-compose一键编排Nginx+MySQL+PHP](https://www.jiyueip.com/article/7677) **Published:** 2026-07-22T00:43:06 **Author:** 斑斓助理 **Excerpt:** 在雨云云服务器上用 Docker + docker-compose 一键编排 Nginx、MySQL、PHP 等服务,覆盖镜像拉取、数据卷持久化、端口映射与网络管理,把环境搭成可复用的代码。 在雨云云服务器上手把手装 LNMP 环境太累了——每次重装、每台机器都要走一遍 apt install、改配置、调版本冲突。Docker 把环境打包成镜像,docker-compose 把多个服务编排成一组,环境变成代码,换机器直接 git pull + docker-compose up 就跑起来。下面按能直接照做的步骤来。 ## 一、安装 Docker 与 docker-compose 在雨云云服务器(Ubuntu 22.04)上一键装: curl -fsSL https://get.docker.com | sh usermod -aG docker $USER systemctl enable docker # docker-compose v2(已内置为 compose 子命令) docker compose version 退出重新登录让用户组生效。Docker Compose V2 已经集成在 docker 里,不需要单独装 docker-compose 二进制。 ## 二、一个标准的 docker-compose.yml 下面这个编排同时拉起 Nginx、MySQL 8.0 和 PHP 8.2-FPM,适合跑 WordPress 或一般 PHP 项目: version: '3.8' services: nginx: image: nginx:1.25 ports: - "80:80" - "443:443" volumes: - ./nginx/conf.d:/etc/nginx/conf.d - ./www:/var/www/html depends\_on: - php restart: always php: image: php:8.2-fpm volumes: - ./www:/var/www/html restart: always mysql: image: mysql:8.0 environment: MYSQL\_ROOT\_PASSWORD: ${DB\_ROOT\_PASS} MYSQL\_DATABASE: wordpress volumes: - db\_data:/var/lib/mysql ports: - "3306:3306" restart: always volumes: db\_data: 关键点:数据库密码用 `.env` 文件管,别写死在 yml 里;数据卷 `db_data` 是 Docker 管理的命名卷,删容器不丢数据。 ## 三、数据卷与持久化 容器默认是无状态的——删了数据就没了。三种持久化方式: - **命名卷**:`db_data:/var/lib/mysql`,Docker 管,适合数据库; - **bind mount**:`./www:/var/www/html`,直接挂宿主机目录,适合代码实时编辑; - **tmpfs**:内存临时文件,适合 PHP session 目录。 数据库和上传文件必用前两种,否则重装哭都来不及。 ## 四、端口映射与网络隔离 docker-compose 默认创建一个项目级网络,服务之间用容器名直接通信(nginx 里写 `fastcgi_pass php:9000` 而不是 localhost)。对外只暴露 80/443,MySQL 3306 如果不需外部连接就别映射端口,安全还省资源。 ## 五、雨云上的使用建议 雨云云服务器新购用优惠码 **admin01** 走专属入口 [https://www.jiyueip.com/link/5617](https://www.jiyueip.com/link/5617) 能拿五折。2 核 4G 跑 LNMP 三容器绰绰有余。上了 Docker 后迁移极方便——把 docker-compose.yml 和代码目录打包,新机器上 `docker compose up -d` 就起,整个过程 10 分钟。 ## 六、常用管理命令 | 命令 | 作用 | | --- | --- | | docker compose up -d | 后台启动所有服务 | | docker compose down | 停止并删除容器(数据卷不删) | | docker compose ps | 查看运行状态 | | docker compose logs -f nginx | 实时看某服务日志 | | docker compose exec php bash | 进容器调试 | | docker compose pull | 拉取最新镜像 | ## 七、几个容易踩的坑 - bind mount 路径用相对路径(./xxx),切换目录执行会挂错——尽量用 `${PWD}` 绝对路径; - MySQL 8.0 默认认证插件和旧客户端不兼容,老镜像升上来记得加 `--default-authentication-plugin=mysql_native_password`; - 容器内 `localhost` 指向容器自身,跨容器访问必须用「服务名」; - 别用 `:latest` 标签上生产,版本漂移排查到怀疑人生,固定如 `mysql:8.0.35`。 ## 常见问题 关于在雨云服务器上用 Docker 部署的常见疑问,下面一并解答。 **Tags:** 云服务器, 服务器运维, 网站运维, 雨云 **Categories:** 行业洞察 ---