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

相关推荐
xhaxy1 分钟前
docker
docker·容器·eureka
一技安身3 小时前
【信创】Docker‑Compose V2 两种离线部署(独立模式、插件模式)简易教程
java·docker·eureka
jyOverQ5 小时前
MySQL 联合索引怎么用?最左匹配原则到底是什么意思?
数据库·mysql
没文化的阿浩5 小时前
【MySQL】用户管理
android·mysql·adb
鸿观工坊7 小时前
Docker 多阶段构建实践指南
docker
ShineWinsu7 小时前
对于MySQL:数据库的操作的解析
linux·数据库·c++·mysql·面试·笔试·库的操作
‎ദ്ദിᵔ.˛.ᵔ₎7 小时前
MySQL 数据类型
数据库·mysql
这个DBA有点耶7 小时前
索引合并不是万能药:MySQL同时用两个索引,为什么比不用还慢?
数据库·mysql·dba
大牧师9 小时前
MySQL 学习教程
数据库·sql·mysql·docker·node·全栈·后端数据
数据库小学妹9 小时前
MySQL redo刷盘实测:innodb_flush_log_at_trx_commit与故障矩阵
运维·数据库·mysql