Docker Compose 本地环境搭建:.env 统一配置模板

Docker Compose 本地环境搭建:.env 统一配置模板

  • [🔗 前言:Docker Compose 本地环境搭建相关文章](#🔗 前言:Docker Compose 本地环境搭建相关文章)
  • [🐳 Docker Compose 本地环境搭建:.env 统一配置模板](#🐳 Docker Compose 本地环境搭建:.env 统一配置模板)
    • [📚 目录结构设计](#📚 目录结构设计)
    • [📄 .env](#📄 .env)
    • [🚀 验证 `env` 是否生效](#🚀 验证 env 是否生效)
    • [📌 约定](#📌 约定)

🔗 前言:Docker Compose 本地环境搭建相关文章


🐳 Docker Compose 本地环境搭建:.env 统一配置模板


📚 目录结构设计

推荐使用如下结构:

bash 复制代码
infra/
├── .env

├── mysql/
│   └── docker-compose.yml

├── redis/
│   └── docker-compose.yml

├── elasticsearch/
│   └── docker-compose.yml

├── skywalking/
│   └── docker-compose.yml

├── nacos/
│   └── docker-compose.yml

📄 .env

替换为自己的相关参数,比如挂载目录 HOST_VOLUME

bash 复制代码
# =========================================================
# 环境名称
#
# 用途:
# - 作为环境维度标识(dev / test / prod)
# - 用于容器名、网络名、volume 路径等变量拼接
#
# 示例:
#   dev  -> 本地开发环境
#   test -> 测试环境
#   prod -> 生产环境
#
ENV=dev


# =========================================================
# Docker Compose 项目名称(Project Name)
#
# 这是 Docker Compose 资源命名与生命周期管理的"根标识"
#
# 作用范围(非常重要):
# - 容器(containers)
# - 网络(networks)
# - 数据卷(volumes)
#
# 资源实际命名规则:
#   <COMPOSE_PROJECT_NAME>_<资源名>
#
# 示例(当前配置):
#   COMPOSE_PROJECT_NAME=dev
#
# 实际生成资源示例(如挂载目录):
#   - dev_es_data
#   - dev_es_logs
#
# 推荐用法(多环境):
#   COMPOSE_PROJECT_NAME=infra-${ENV}
#   例如:
#     ENV=dev   -> infra-dev
#     ENV=test  -> infra-test
#     ENV=prod  -> infra-prod
#
# 注意事项(⚠ 必读):
# - 修改该值后,Docker Compose 会认为是"一个全新的项目"
# - 旧的容器 / 网络 / volume 不会自动复用
# - 一旦进入稳定使用阶段,不建议频繁修改
#
# 官方文档:
# https://docs.docker.com/compose/reference/envvars/#compose_project_name
#
COMPOSE_PROJECT_NAME=dev


# =========================================================
# Docker 网络配置
#
# NETWORK_NAME:
# - Compose 创建的 Docker 自定义网络名称
# - 使用 ENV 后缀,保证多环境网络隔离
#
# NETWORK_SUBNET:
# - 自定义 bridge 网络的子网
# - 用于固定容器 IP 范围,避免与宿主或其他网络冲突
#
# 多环境推荐:
#   dev  -> 10.10.0.0/24
#   test -> 10.20.0.0/24
#   prod -> 10.30.0.0/24
NETWORK_NAME=network-${ENV}
NETWORK_SUBNET=10.10.0.0/24


# =========================================================
# 宿主机数据卷根目录(Bind Mount Root)
#
# 所有容器的宿主机挂载目录统一从此路径派生
#
# 示例:
#   MySQL 数据目录:
#     ${HOST_VOLUME}/${ENV}/MySQL8/data
#
# 强烈建议:
# - Windows 下优先使用已共享的磁盘
# - 这里要用反斜杠,'/',否则会挂载提示目录找不到
#
HOST_VOLUME=A:/Files/DockerDesktop/DockerVolume


# =========================================================
# MySQL 配置
#
# MYSQL_VERSION:
# - MySQL Docker 镜像版本
# - 默认端口(容器内):3306
#
# MYSQL_ROOT_PASSWORD:
# - root 用户初始化密码
#
# MYSQL_PORT:
# - 映射到宿主机的端口(用于外部访问)
# - ⚠ 默认 MySQL 端口:3306
# - ⚠ 当前建议:不同环境避免冲突(如 23306/33306/43306)
#
MYSQL_VERSION=8.4.7
MYSQL_ROOT_PASSWORD=Pass@8520
MYSQL_PORT=23306


# =========================================================
# Elasticsearch 配置
#
# ES_VERSION:
# - Elasticsearch Docker 镜像版本
#
# ES_PASSWORD:
# - 内置 elastic 用户密码
# - SkyWalking OAP / 外部访问 ES 使用
#
# ES_PORT_HTTP:
# - Elasticsearch HTTP REST API 端口
# - ⚠ 默认端口:9200
# - ⚠ 当前已修改为:29200(避免冲突)
#
# ES_PORT_TRANSPORT:
# - 节点间通信端口(默认 9300)
# - 单节点模式一般不需要暴露
#
ES_VERSION=8.18.8
ES_PASSWORD=Pass@8520
ES_PORT_HTTP=29200
ES_PORT_TRANSPORT=29300


# =========================================================
# Redis 配置
#
# REDIS_VERSION:
# - Redis Docker 镜像版本
#
# REDIS_PASSWORD:
# - Redis 访问密码
#
# REDIS_PORT:
# - 映射到宿主机的端口
# - ⚠ 默认端口:6379
# - ⚠ 当前建议:26379 / 36379 / 46379(多环境隔离)
#
REDIS_VERSION=8.4.0
REDIS_PASSWORD=Pass@8520
REDIS_PORT=26379


# =========================================================
# SkyWalking 配置
#
# SW_VERSION:
# - SkyWalking OAP / UI Docker 镜像版本
#
# SW_ES_USER / SW_ES_PASSWORD:
# - SkyWalking OAP 连接 Elasticsearch 使用的账号
#
# SW_OAP_PORT_GRPC:
# - OAP gRPC 服务端口(Agent 上报使用)
# - ⚠ 默认端口:11800(内部必须固定,Agent 默认依赖)
# - ⚠ 当前建议:21800/31800/41800(多环境隔离)
#
# SW_OAP_PORT_REST:
# - OAP REST API 端口
# - ⚠ 默认端口:12800
# - ⚠ 当前建议:22800/32800/42800(多环境隔离)
#
# SW_UI_PORT:
# - SkyWalking UI Web 访问端口
# - ⚠ 默认端口:8080
# - ⚠ 当前建议:28080/38080/48080(避免冲突)
#
SW_VERSION=10.3.0
SW_ES_USER=elastic
SW_ES_PASSWORD=Pass@8520
SW_OAP_PORT_GRPC=21800
SW_OAP_PORT_REST=22800
SW_UI_PORT=28080


# =========================================================
# Nacos 配置
#
# NACOS_VERSION:
# - Nacos Docker 镜像版本
#
#
# NACOS_PORT_UI
# - Web UI 主入口(3.x 推荐)
# - 默认:8080
#
# NACOS_PORT:
# - OpenAPI / HTTP 接口(不再承载 UI)
# - 默认:8848
# - 推荐多环境:
#   dev  -> 28848
#   test -> 38848
#   prod -> 48848
#
# NACOS_PORT_GRPC:
# - gRPC 通信端口(客户端核心通信)
# - 默认:9848
#
# NACOS_PORT_RAFT:
# - 集群 Raft 通信端口(单机可不用)
# - 默认:9849
#
# NACOS_AUTH_ENABLE:
# - 是否开启鉴权(true/false)
#
# NACOS_AUTH_TOKEN:
# - JWT 签名密钥(Base64)
# - 解码后必须 ≥ 32 bytes
#
# NACOS_AUTH_TOKEN_EXPIRE_SECONDS:
# - Token 过期时间(秒)
#
# NACOS_AUTH_IDENTITY_KEY / VALUE:
# - 内部服务身份认证参数
# - 用于 Nacos 节点/服务间通信
#
# NACOS_DB_NAME:
# - Nacos 使用的数据库名称
#
# NACOS_DB_USER / NACOS_DB_PASSWORD:
# - MySQL 登录账号
#
# 官方文档:
# https://www.nacos.io/docs/latest/manual/admin/system-configurations/?spm=55c5c5db.2ef5001f.0.0.73a53b7cSZtfQh#2-%E9%95%9C%E5%83%8F%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F
# =========================================================
NACOS_VERSION=v3.2.0
NACOS_PORT_UI=28838
NACOS_PORT=28848
NACOS_PORT_GRPC=29848
NACOS_PORT_RAFT=29849
NACOS_AUTH_ENABLE=true
NACOS_AUTH_TOKEN=YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoxMjM0NTY=
NACOS_AUTH_TOKEN_EXPIRE_SECONDS=3600000
NACOS_AUTH_IDENTITY_KEY=serverIdentity
NACOS_AUTH_IDENTITY_VALUE=nacosSecurity
NACOS_DB_NAME=nacos
NACOS_DB_USER=nacos_user
NACOS_DB_PASSWORD=Pass@8520

🚀 验证 env 是否生效

bash 复制代码
docker compose --env-file .env -f mysql/docker-compose.yml config

📌 约定

  • 所有配置必须来自 .env
  • 禁止在 compose 中写死端口/密码/路径
相关推荐
IMPYLH2 小时前
Linux 的 sleep 命令
linux·运维·服务器·bash
天空属于哈夫克32 小时前
企微自动化:API接口的私有化部署架构
运维·架构·自动化
2401_836554222 小时前
服务器 Docker 部署 Hermes Agent → 飞书(零端口暴露)
服务器·docker·飞书
嵌入式×边缘AI:打怪升级日志2 小时前
DHT11 驱动开发实录:从零搭建 Linux 字符设备驱动框架(保姆级教学)
linux·运维·驱动开发
艾莉丝努力练剑2 小时前
【Linux网络】计算机网络入门:网络通信——跨主机的进程间通信(IPC)与Socket编程入门
linux·运维·服务器·网络·c++·学习·计算机网络
白豆五2 小时前
使用 Docker 搭建 Maven 私服
docker·容器·maven
七夜zippoe2 小时前
2026年4月横评:远程软件内卷破局!UU 远程凭实力成为远程工具综合首选
运维·服务器·负载均衡·远程·协助
Lfei51202 小时前
Centos 9 stream部署zabbix7.0.25(最新)
linux·运维·centos
枫叶落雨2222 小时前
服务器下载两个jdk
linux·运维·服务器