Docker 本地开发环境搭建(MySQL5.7 + Redis7 + Nginx + 达梦8)- Windows11 版 2.0

拉取mysql

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:5.7.44

docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:5.7.44 docker.io/mysql:5.7.44

拉取redis

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/redis:7.2-alpine

docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/redis:7.2-alpine docker.io/redis:7.2-alpine

拉取nginx

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:1.26.1-alpine

docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:1.26.1-alpine docker.io/nginx:1.26.1-alpine

Docker 本地开发环境搭建(MySQL5.7 + Redis7 + Nginx + 达梦8)- Windows11 版

📦 一、环境说明

适用于 Windows 11 的本地开发环境,一键搭建以下组件:

  • ✅ MySQL 5.7.44
  • ✅ Redis 7.2(带密码、持久化)
  • ✅ Nginx 1.26.1(静态页面+代理支持)
  • ✅ 达梦数据库 DM8(自动建库、建用户)

🧰 二、环境准备

1. 安装 Docker Desktop for Windows

前往官网下载并安装:

👉 https://www.docker.com/products/docker-desktop/

⚠️ 安装时务必启用:

  • WSL2(推荐)或 Hyper-V
  • Virtual Machine Platform(如未启用,可在 PowerShell 中执行):
powershell 复制代码
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

并重启系统。


2. 创建目录结构

在你喜欢的路径下创建一个项目文件夹(如:D:\docker-dev-env)

bash 复制代码
docker-dev-env/
├── app/                  ← 放静态前端页面
├── mysql/
│   ├── data/
│   └── conf.d/
├── redis/
│   └── data/
├── nginx/
│   └── conf.d/
├── dm8/
│   ├── data/
│   └── init/
│       └── init.sql      ← 达梦初始化脚本
├── docker-compose.yml
├── start.bat             ← 一键启动脚本
└── stop.bat              ← 一键关闭脚本

⚙️ 三、Docker Compose 配置

文件:docker-compose.yml

yaml 复制代码
version: '3.8'
services:
  mysql:
    image: mysql:5.7.44
    container_name: mysql
    restart: always
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root123
      MYSQL_DATABASE: devdb
    volumes:
      - ./mysql/data:/var/lib/mysql
      - ./mysql/conf.d:/etc/mysql/conf.d
    networks:
      - dev-net

  redis:
    image: redis:7.2-alpine
    container_name: redis
    restart: always
    ports:
      - "6379:6379"
    command: redis-server --requirepass yourpassword
    volumes:
      - ./redis/data:/data
    networks:
      - dev-net

  nginx:
    image: nginx:1.26.1-alpine
    container_name: nginx
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./app:/usr/share/nginx/html
    depends_on:
      - mysql
      - redis
    networks:
      - dev-net

  dameng:
    image: xuxuclassmate/dameng:v8.1
    container_name: dameng8
    restart: always
    ports:
      - "5236:5236"
    environment:
      PAGE_SIZE: 16
      SYSDBA_PWD: SYSDBA123456  # 可自定义
    volumes:
      - ./dm8/data:/opt/dmdbms/data
      - ./dm8/init:/docker-entrypoint-initdb.d
    networks:
      - dm-net


networks:
  dev-net:
    driver: bridge

🧾 四、达梦数据库初始化 SQL

文件路径:dm8/init/init.sql

sql 复制代码
-- 自动初始化达梦数据库(首次启动执行一次)
create tablespace TESTDATA datafile 'TESTDATA01.DBF' size 200;
create user test identified by test123 default tablespace TESTDATA;
grant dba to test;

执行后你可以使用如下命令连接该用户:

bash 复制代码
docker exec -it dm8 bash -c "disql test/test123"

🖥️ 五、启动和关闭脚本(适用于 Win11)

start.bat

bat 复制代码
@echo off
echo 启动本地开发环境...
docker-compose up -d
pause

stop.bat

bat 复制代码
@echo off
echo 停止本地开发环境...
docker-compose down
pause

将以上内容分别保存为 start.bat 和 stop.bat,双击即可一键启动或关闭所有容器。


🧪 六、测试连接

1. MySQL 测试

bash 复制代码
docker exec -it mysql mysql -uroot -proot123 -e "SHOW DATABASES;"

2. Redis 测试

bash 复制代码
docker exec -it redis redis-cli -a yourpassword ping

3. 达梦测试

bash 复制代码
docker exec -it dm8 bash -c "disql test/test123"

📌 七、小贴士

  • 所有服务数据均已挂载本地,重启容器不会丢数据
  • 你可以在 app 目录下放置前端静态资源,即可通过 http://localhost 访问
  • 达梦初始化 SQL 只在首次运行容器时执行一次
  • 推荐将 .env 配置引入密码、数据库名等参数,以增强可维护性

✅ 现在你已经拥有了一个可以"一键启动 + 自动初始化"的本地开发环境,适合快速开发、联调和集成测试!

🚀 欢迎扩展:Kafka、MinIO、Elasticsearch、MongoDB 等服务,只需在 docker-compose.yml 中添加即可。

复制代码
---

需要我将 `.yml` 和 `init.sql` 也以纯文本形式贴出来吗?或者要打成一个 GitHub 模板也可以。你怎么方便我就怎么来。
相关推荐
EterNity_TiMe_3 小时前
Docker服务越装越多记不住端口?我用Fenrus把NAS里的常用入口整理成一个导航页
运维·人工智能·docker·ai·容器·cpolar
吴声子夜歌3 小时前
Docker入门与实战——libnetwork插件化网络功能
网络·docker·容器
江湖有缘4 小时前
Docker实战 | 使用Docker部署HarborGuard容器安全扫描平台
安全·docker·容器
江湖有缘4 小时前
Docker实战 | 使用Docker部署Reubah文件转换器和图像处理器
docker·容器·eureka
七夜zippoe5 小时前
把 OpenClaw Agent 搬进 K8s:容器化部署全记录
ai·云原生·容器·kubernetes·openclaw
骑着蜗牛撵大象3275 小时前
ToolJet + PostgreSQL:后台表格、查询和流程,一次搭成可远程访问的业务系统
数据库·低代码·docker·postgresql·内部工具·tooljet
flytalei6 小时前
从 Docker Compose 到 K3s:逐浪笔记首次完整部署与故障排查实战
笔记·docker·容器
吴声子夜歌7 小时前
Docker入门与实战——高级网络功能
网络·docker
JavaPub-rodert16 小时前
Docker 日志为什么能把磁盘写爆?讲透 json-file、local、journald、日志轮转与 docker logs
docker·eureka·json
人生匆匆17 小时前
docker部署ceph集群
ceph·docker·容器