Docker Compose实战:一键部署Nginx+MySQL+Redis全栈环境,从小白到生产级配置

前言

在现代化应用开发中,Docker已经成为标配。但很多开发者仍然停留在”能跑起来”的阶段,缺乏生产级的配置经验。本文将手把手教你使用Docker Compose编排Nginx、MySQL、Redis,并附带完整的生产环境配置方案。

一、项目结构规划

良好的目录结构是成功的一半。我们采用以下结构:

mkdir -p ~/docker-lnmp/{nginx,mysql,redis,app,logs}
cd ~/docker-lnmp
tree -L 2

二、编写Docker Compose配置

2.1 基础版本(开发环境)

version: '3.8'

services:
  nginx:
    image: nginx:1.25-alpine
    container_name: lnmp-nginx
    ports:
      - "80:80"
      - "443:443"

三、Nginx配置实战

3.1 基础PHP站点配置

server {
    listen 80;
    server_name localhost;
    root /var/www/html;
    index index.php index.html;
}

四、PHP容器自定义扩展

FROM php:8.2-fpm-alpine
RUN apk add --no-cache freetype libjpeg-turbo libpng
RUN docker-php-ext-install gd pdo_mysql mysqli zip
RUN pecl install redis-6.0.2 && docker-php-ext-enable redis

五、MySQL初始化脚本

CREATE DATABASE IF NOT EXISTS app_db;
USE app_db;
CREATE TABLE IF NOT EXISTS users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    email VARCHAR(100) NOT NULL UNIQUE
);

六、Redis配置优化

bind 0.0.0.0
port 6379
requirepass YourRedisPasswordHere
appendonly yes
maxmemory 512mb
maxmemory-policy allkeys-lru

七、一键启动脚本

#!/bin/bash
set -e
echo "开始部署LNMP+Redis环境..."
mkdir -p {nginx/conf.d,php,app,mysql/data,redis/data,logs}
docker-compose pull
docker-compose up -d
echo "部署完成!"

八、日常运维命令

docker-compose ps
docker-compose logs -f
docker-compose exec mysql mysql -uroot -p
docker-compose exec redis redis-cli PING

九、性能压测对比

ab -n 10000 -c 100 http://localhost/
wrk -t12 -c400 -d30s http://localhost/

十、常见问题排查

10.1 容器无法启动

docker logs lnmp-nginx
docker inspect lnmp-nginx
netstat -tlnp | grep 80

10.2 PHP连接MySQL失败

getMessage();
}
?>

注意:在Docker网络中,容器之间使用服务名(如mysql、redis)作为hostname,而不是localhost或127.0.0.1。

总结

本文从零到一搭建了生产级Docker LNMP+Redis环境,涵盖了:

  • 基础编排:Docker Compose多服务编排
  • 生产加固:健康检查、资源限制、Secrets管理
  • 配置优化:Nginx SSL、PHP扩展、MySQL索引、Redis持久化
  • 运维工具:一键部署脚本、备份恢复、性能压测

实际部署时请根据业务需求调整资源配置,并定期更新镜像以修复安全漏洞。

下期预告:Git协作与GitHub Actions CI/CD(周三主题),我们将实现代码提交后自动部署到Docker环境!

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容