Docker Compose部署LNMP环境完整教程:一键启动Nginx+MySQL+PHP
为什么用 Docker Compose 部署 LNMP?
传统方式在服务器上安装 Nginx、MySQL、PHP 需要处理大量依赖冲突和版本问题,迁移时更是麻烦。Docker Compose 将整个 LNMP 环境打包成几个容器,一条命令启动,一条命令销毁,迁移只需复制配置文件,极大降低运维复杂度。
一、环境准备
# 安装 Docker
curl -fsSL https://get.docker.com | bash
# 安装 Docker Compose
sudo apt install docker-compose-plugin -y
# 验证安装
docker --version
docker compose version二、目录结构规划
mkdir -p ~/lnmp/{nginx/conf.d,php,mysql/data,www}
cd ~/lnmp目录说明:
nginx/conf.d/:Nginx 站点配置文件php/:PHP 自定义配置mysql/data/:MySQL 数据持久化目录www/:网站根目录
三、编写 docker-compose.yml
nano docker-compose.ymlversion: '3.8'
services:
nginx:
image: nginx:1.25-alpine
container_name: lnmp_nginx
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
- ./www:/var/www/html
- ./nginx/logs:/var/log/nginx
depends_on:
- php
networks:
- lnmp_net
restart: unless-stopped
php:
image: php:8.2-fpm-alpine
container_name: lnmp_php
volumes:
- ./www:/var/www/html
- ./php/php.ini:/usr/local/etc/php/conf.d/custom.ini
networks:
- lnmp_net
restart: unless-stopped
mysql:
image: mysql:8.0
container_name: lnmp_mysql
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: mydb
MYSQL_USER: myuser
MYSQL_PASSWORD: your_db_password
volumes:
- ./mysql/data:/var/lib/mysql
ports:
- "127.0.0.1:3306:3306"
networks:
- lnmp_net
restart: unless-stopped
networks:
lnmp_net:
driver: bridge安全注意:MySQL 端口只绑定到 127.0.0.1,不对外网暴露。
四、配置 Nginx 站点
nano nginx/conf.d/default.confserver {
listen 80;
server_name your-domain.com;
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
}五、配置 PHP
nano php/php.iniupload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
memory_limit = 256M
date.timezone = Asia/ShanghaiPHP 镜像默认不包含常用扩展,需要安装 mysqli 和 pdo_mysql:
# 进入 PHP 容器安装扩展
docker compose exec php sh -c "docker-php-ext-install mysqli pdo_mysql && docker-php-ext-enable mysqli"
docker compose restart php六、启动并验证
# 启动所有服务
docker compose up -d
# 查看运行状态
docker compose ps
# 查看日志
docker compose logs -f nginx创建测试文件验证 PHP 运行:
echo "" > www/info.php浏览器访问 http://服务器IP/info.php,看到 PHP 信息页面说明 LNMP 环境运行正常。
七、常用管理命令
# 停止所有容器
docker compose down
# 重启单个服务
docker compose restart nginx
# 进入容器内部
docker compose exec mysql mysql -u root -p
# 更新镜像并重启
docker compose pull && docker compose up -d总结
Docker Compose 部署 LNMP 的核心优势是:环境隔离、配置版本化、一键迁移。整个部署流程约 10 分钟,适合在香港 VPS 上快速搭建 Web 环境,也适合需要同时维护多个项目的开发者。
如需运行本文教程,IDC.Net 香港云服务器首月 10 元起,支持 Ubuntu 22.04,自助面板随时重装,CN2 GIA 直连大陆,支付宝付款即可开通。
版权声明:
作者:后浪云
链接:https://idc.net/help/442546/
文章版权归作者所有,未经允许请勿转载。
THE END
