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

📅 2026/7/4 21:05:28 👁️ 阅读次数 📝 编程学习
Docker Compose 本地环境搭建:.env 统一配置模板

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

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

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

  • Docker Compose 本地环境搭建:独立 Compose + 共享网络 + .env 统一管理(架构设计篇)

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

  • Docker Compose 本地环境搭建:mysql

  • Docker Compose 本地环境搭建:elasticsearch

  • Docker Compose 本地环境搭建:skywalking

  • Docker Compose 本地环境搭建:redis

  • Docker Compose 本地环境搭建:nacos

  • Docker Compose 本地环境搭建:nginx


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


📚 目录结构设计

推荐使用如下结构:

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

# =========================================================# 环境名称## 用途:# - 作为环境维度标识(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/24NETWORK_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.7MYSQL_ROOT_PASSWORD=Pass@8520MYSQL_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.8ES_PASSWORD=Pass@8520ES_PORT_HTTP=29200ES_PORT_TRANSPORT=29300# =========================================================# Redis 配置## REDIS_VERSION:# - Redis Docker 镜像版本## REDIS_PASSWORD:# - Redis 访问密码## REDIS_PORT:# - 映射到宿主机的端口# - 默认端口:6379# - 当前建议:26379 / 36379 / 46379(多环境隔离)#REDIS_VERSION=8.4.0REDIS_PASSWORD=Pass@8520REDIS_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.0SW_ES_USER=elasticSW_ES_PASSWORD=Pass@8520SW_OAP_PORT_GRPC=21800SW_OAP_PORT_REST=22800SW_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.0NACOS_PORT_UI=28838NACOS_PORT=28848NACOS_PORT_GRPC=29848NACOS_PORT_RAFT=29849NACOS_AUTH_ENABLE=trueNACOS_AUTH_TOKEN=YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoxMjM0NTY=NACOS_AUTH_TOKEN_EXPIRE_SECONDS=3600000NACOS_AUTH_IDENTITY_KEY=serverIdentityNACOS_AUTH_IDENTITY_VALUE=nacosSecurityNACOS_DB_NAME=nacosNACOS_DB_USER=nacos_userNACOS_DB_PASSWORD=Pass@8520# =========================================================# Nginx 配置## NGINX_VERSION:# - Nginx Docker 镜像版本## NGINX_PORT_HTTP:# - 映射到宿主机的 HTTP 端口# - 默认端口:80## NGINX_PORT_HTTPS:# - 映射到宿主机的 HTTPS 端口# - 默认端口:443#NGINX_VERSION=1.30.0NGINX_PORT_HTTP=20000NGINX_PORT_HTTPS=2443# =========================================================# Milvus 环境配置## ETCD_VERSION:# - ETCD Docker 镜像版本## MINIO_VERSION:# - MINIO Docker 镜像版本## MINIO_ROOT_USER:# - MinIO 管理员账号## MINIO_ROOT_PASSWORD:# - MinIO 管理员密码## MINIO_API_PORT:# - MinIO S3 API 映射端口# - 默认端口:9000## MINIO_CONSOLE_PORT:# - MinIO 控制台映射端口# - 默认端口:9001## MILVUS_VERSION:# - MILVUS Docker 镜像版本## MILVUS_PORT:# - Milvus gRPC 服务端口# - 默认端口:19530## MILVUS_HEALTH_PORT:# - Milvus 健康检查端口# - 默认端口:9091## ATTU_VERSION:# - ATTU Docker 镜像版本## ATTU_PORT:# - Attu Web UI 访问端口# - 默认端口:3000#ETCD_VERSION=v3.5.25MINIO_VERSION=RELEASE.2025-09-07T16-13-09ZMINIO_ROOT_USER=minio_userMINIO_ROOT_PASSWORD=Pass@8520MINIO_API_PORT=29000MINIO_CONSOLE_PORT=29001MILVUS_VERSION=v2.6.3MILVUS_PORT=29530MILVUS_HEALTH_PORT=29091ATTU_VERSION=v2.6.5ATTU_PORT=23000

🚀 验证env是否生效

dockercompose --env-file .env-fmysql/docker-compose.yml config

📌 约定

  • 所有配置必须来自.env
  • 禁止在 compose 中写死端口/密码/路径