Docker Compose 本地环境搭建:mysql

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 替换

相关推荐
CodexDave5 小时前
MySQL事务隔离级别与MVCC机制解析
前端·数据库·mysql·nginx·性能优化·负载均衡
王琦03187 小时前
生产环境中使用通用二进制包安装
mysql
BullSmall8 小时前
Anolis OS 8.10 完整安装 Docker CE(生产可用,解决 podman 冲突)
docker·容器·podman
蓝田~10 小时前
MySQL慢查询怎么优化?B+Tree索引原理+MVCC读不阻塞写+EXPLAIN执行计划,从5秒到0.05秒
数据库·mysql
Herbert_hwt10 小时前
MySQL学习前言:关于MySQL的历史与当下学习的必要性
mysql
梦梦代码精11 小时前
开源AI应用平台BuildingAI解析:插件化架构、应用市场与热门案例
人工智能·机器学习·docker·开源
时间的拾荒人11 小时前
MySQL 视图详解
android·数据库·mysql
尽兴-12 小时前
企业数据库选型与演进:Oracle、达梦、MySQL 与分库分表实践
数据库·mysql·oracle·分库分表
IT瑞先生13 小时前
Docker快速部署Mysql的三种方法——实操篇
mysql·adb·docker
数据库小学妹14 小时前
MySQL在线DDL实战:ALGORITHM三种算法对比+gh-ost变更管理SOP
mysql·dba·数据库运维·在线ddl·mdl锁·sql变更管理