Docker Compose 本地环境搭建:mysql
- [🔗 前言:Docker Compose 本地环境搭建相关文章](#🔗 前言:Docker Compose 本地环境搭建相关文章)
- [🐳 Docker Compose 本地环境搭建:mysql](#🐳 Docker Compose 本地环境搭建:mysql)
-
- [📚 目录结构设计](#📚 目录结构设计)
- [📄 docker-compose.yml](#📄 docker-compose.yml)
- [🚀 启动方式](#🚀 启动方式)
🔗 前言:Docker Compose 本地环境搭建相关文章
🐳 Docker Compose 本地环境搭建:mysql
📚 目录结构设计
推荐使用如下结构:
bash
infra/
├── .env
├── mysql/
│ └── docker-compose.yml
├── redis/
│ └── docker-compose.yml
├── elasticsearch/
│ └── docker-compose.yml
├── skywalking/
│ └── docker-compose.yml
├── nacos/
│ └── docker-compose.yml
📄 docker-compose.yml
bash
# =========================================================
# 用于构建环境:MySQL
# 宿主机挂载目录、端口、密码、版本号、环境后缀均通过 .env 文件管理
# =========================================================
###########################################################
# 网络配置
###########################################################
networks:
env_network: # 内部网络标识固定
driver: bridge
name: ${NETWORK_NAME} # Docker 实际网络名动态生成
ipam:
config:
- subnet: ${NETWORK_SUBNET} # 子网从 .env 获取
###########################################################
# 卷(Volume)配置
###########################################################
volumes:
# MySQL
mysql_data:
driver: local
driver_opts:
type: none
device: ${HOST_VOLUME}/${ENV}/MySQL8/data
o: bind
mysql_conf:
driver: local
driver_opts:
type: none
device: ${HOST_VOLUME}/${ENV}/MySQL8/conf
o: bind
mysql_logs:
driver: local
driver_opts:
type: none
device: ${HOST_VOLUME}/${ENV}/MySQL8/logs
o: bind
###########################################################
# 服务定义
###########################################################
services:
# MySQL
mysql:
image: mysql:${MYSQL_VERSION}
container_name: mysql_${MYSQL_VERSION}_${ENV} # 容器名体现版本和环境
networks:
- env_network # 内部网络引用固定标识
ports:
- "${MYSQL_PORT}:3306"
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
volumes:
- mysql_data:/var/lib/mysql
- mysql_conf:/etc/mysql/conf.d
- mysql_logs:/logs
restart: unless-stopped
labels:
env: ${ENV}
version: ${MYSQL_VERSION}
service: mysql_${ENV}
🚀 启动方式
在 .env 同级目录下执行
bash
docker compose --env-file .env -f mysql/docker-compose.yml up -d
docker compose --env-file .env -f redis/docker-compose.yml up -d
docker compose --env-file .env -f elasticsearch/docker-compose.yml up -d
docker compose --env-file .env -f skywalking/docker-compose.yml up -d
docker compose --env-file .env -f nacos/docker-compose.yml up -d
- -d 表示 后台运行
- Compose 会:
- 自动读取 .env 文件里的变量
- 根据 docker-compose.yml 配置创建网络、卷和容器
- 容器名、端口、挂载目录都会根据 .env 替换