Docker Compose企业实战系列(一):LNMP环境一键部署(Nginx+MySQL+PHP)
前言
前面 Docker 基础八篇系列 我们已经完整学完:容器原理、镜像构建、数据挂载、网络、Compose 基础编排、生产最佳实践。
理论学完,接下来进入企业落地实战阶段。
本系列主打:一篇一套真实可复用模板、开箱即用、生产级配置、无废话。
很多个人站长、小团队开发、测试环境,最常用的就是 LNMP 环境:Nginx + MySQL + PHP。
传统搭建 LNMP 耗时、环境容易脏、版本冲突、卸载不干净。用 Docker Compose 一键搭建,全程5分钟,环境纯净、可迁移、可销毁。
本篇给大家一套完整成型、可直接上线的 LNMP Compose 模板。
一、环境架构说明
本次搭建包含三大服务:
-
Nginx:静态资源服务、反向代理、入口服务
-
MySQL 8.0:数据库持久化存储
-
PHP-FPM 8.1:PHP 解析运行环境
所有服务统一组网、自动挂载目录、数据持久化、开机自启。
二、项目目录结构
先建好统一目录结构,规范整洁、方便后续维护:
plain
lnmp-docker/
├── docker-compose.yml # 核心编排文件
├── .env # 环境变量配置
├── nginx/
│ └── conf/ # Nginx配置挂载目录
├── www/ # 网站根目录
└── mysql/
└── data/ # 数据库数据持久化目录
三、编写环境变量 .env
在根目录新建 .env,统一管理密码、版本、端口,避免硬编码:
env
# MySQL配置
MYSQL_ROOT_PASSWORD=123456
MYSQL_DATABASE=default_db
MYSQL_USER=webuser
MYSQL_PASSWORD=web123456
# 镜像版本
MYSQL_VERSION=8.0
NGINX_VERSION=alpine
PHP_VERSION=8.1-fpm-alpine
四、核心 docker-compose.yml 完整配置
新建 docker-compose.yml,复制下面全套配置,直接可用:
yaml
version: '3.8'
services:
# Nginx服务
nginx:
image: nginx:${NGINX_VERSION}
ports:
- "80:80"
volumes:
- ./www:/usr/share/nginx/html
- ./nginx/conf:/etc/nginx/conf.d
depends_on:
- php
restart: always
networks:
- lnmp-net
# PHP服务
php:
image: php:${PHP_VERSION}
volumes:
- ./www:/usr/share/nginx/html
restart: always
networks:
- lnmp-net
# MySQL服务
mysql:
image: mysql:${MYSQL_VERSION}
ports:
- "3306:3306"
volumes:
- ./mysql/data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
restart: always
networks:
- lnmp-net
# 自定义网络
networks:
lnmp-net:
driver: bridge
五、默认 Nginx 配置支持 PHP 解析
在 nginx/conf 目录新建 default.conf,解决 Nginx 不解析 PHP 的经典问题:
nginx
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.html index.php;
# 支持PHP解析
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
六、测试 PHP 环境
在 www 目录新建 info.php
php
<?php
phpinfo();
?>
七、一键启动 LNMP 环境
进入项目根目录,执行启动命令:
bash
# 后台启动所有服务
docker compose up -d
查看服务状态:
bash
docker compose ps
八、访问测试
-
静态页面:
http://localhost -
PHP环境检测:
http://localhost/info.php
能正常展示 PHP 信息,代表 Nginx + PHP 联动成功。
九、MySQL 连接测试
本地数据库工具直接连接:
-
地址:服务器IP / localhost
-
端口:3306
-
账号:root / webuser
-
密码:.env 文件中配置的密码
十、常用运维命令
bash
# 查看日志
docker compose logs -f
# 重启单个服务
docker compose restart nginx
# 停止服务不删数据
docker compose stop
# 销毁容器网络(保留数据)
docker compose down
十一、本方案优势(对比传统搭建)
-
环境纯净隔离:不污染宿主机系统
-
一键迁移:换服务器直接拉目录启动即可
-
数据持久化:删容器不丢数据库数据
-
版本可控:PHP、MySQL 版本固定,不会乱升级
-
开箱即用:新手5分钟搭建完整网站环境
本期总结
本篇我们完成了 Docker Compose 版本 LNMP 完整生产环境,彻底告别传统繁琐编译安装。
所有配置规范化:挂载配置、数据持久化、环境变量隔离、自定义网络、自动重启,完全满足个人建站、测试环境、小型生产环境使用。
下期预告
Docker Compose企业实战系列(二):SpringBoot+MySQL+Redis 后端项目完整部署
下一篇带你部署最常用的 Java 后端微服务整套环境,实现项目打包、容器运行、数据库联动、缓存联动一键部署。