在雨云云服务器上手把手装 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 能拿五折。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 部署的常见疑问,下面一并解答。






