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

相关推荐
知行产研1 小时前
易控智驾:毛利率跃升17.2个百分点,矿山无人驾驶从“规模换增长“迈入“盈利拐点“
数据库·mysql
可涵不会debug2 小时前
第一次学 LangGraph:用一个快递案例搞懂 State、Node、Edge 和 compile
服务器·数据库·mysql
用户250458106093 小时前
数据库索引为什么会失效?从执行计划理解 SQL 性能优化
sql·mysql
此时不提桶,更待何时3 小时前
03-04-B-连接池与DB治理面试与生产事故实战
mysql·面试
dogeyi5 小时前
数据库操作(1)
mysql
vipxieliang5 小时前
Docker vs Podman vs containerd:容器运行时全景
docker·容器
JosieBook5 小时前
【数据库】MySQL 实战精通系列 · 第8篇:慢查询治理与性能优化实战
数据库·mysql·性能优化
vipxieliang5 小时前
数据持久化方案:卷、挂载、权限与备份恢复
docker·容器
vipxieliang5 小时前
Compose 生产级配置:从 demo 到可上线
docker
vipxieliang5 小时前
容器原理揭秘:namespace、cgroup 与镜像分层
docker·容器