
Docker Compose 本地环境搭建.env 统一配置模板 前言Docker Compose 本地环境搭建相关文章 Docker Compose 本地环境搭建.env 统一配置模板 目录结构设计 .env 验证 env 是否生效 约定 前言Docker Compose 本地环境搭建相关文章Docker Compose 本地环境搭建独立 Compose 共享网络 .env 统一管理架构设计篇Docker Compose 本地环境搭建.env 统一配置模板Docker Compose 本地环境搭建mysqlDocker Compose 本地环境搭建elasticsearchDocker Compose 本地环境搭建skywalkingDocker Compose 本地环境搭建redisDocker Compose 本地环境搭建nacosDocker 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 - 生产环境#ENVdev# # Docker Compose 项目名称Project Name## 这是 Docker Compose 资源命名与生命周期管理的“根标识”## 作用范围非常重要# - 容器containers# - 网络networks# - 数据卷volumes## 资源实际命名规则# COMPOSE_PROJECT_NAME_资源名## 示例当前配置# COMPOSE_PROJECT_NAMEdev## 实际生成资源示例如挂载目录# - dev_es_data# - dev_es_logs## 推荐用法多环境# COMPOSE_PROJECT_NAMEinfra-${ENV}# 例如# ENVdev - infra-dev# ENVtest - infra-test# ENVprod - infra-prod## 注意事项必读# - 修改该值后Docker Compose 会认为是“一个全新的项目”# - 旧的容器 / 网络 / volume 不会自动复用# - 一旦进入稳定使用阶段不建议频繁修改## 官方文档# https://docs.docker.com/compose/reference/envvars/#compose_project_name#COMPOSE_PROJECT_NAMEdev# # 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_NAMEnetwork-${ENV}NETWORK_SUBNET10.10.0.0/24# # 宿主机数据卷根目录Bind Mount Root## 所有容器的宿主机挂载目录统一从此路径派生## 示例# MySQL 数据目录# ${HOST_VOLUME}/${ENV}/MySQL8/data## 强烈建议# - Windows 下优先使用已共享的磁盘# - 这里要用反斜杠/否则会挂载提示目录找不到#HOST_VOLUMEA:/Files/DockerDesktop/DockerVolume# # MySQL 配置## MYSQL_VERSION# - MySQL Docker 镜像版本# - 默认端口容器内3306## MYSQL_ROOT_PASSWORD# - root 用户初始化密码## MYSQL_PORT# - 映射到宿主机的端口用于外部访问# - 默认 MySQL 端口3306# - 当前建议不同环境避免冲突如 23306/33306/43306#MYSQL_VERSION8.4.7MYSQL_ROOT_PASSWORDPass8520MYSQL_PORT23306# # 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_VERSION8.18.8ES_PASSWORDPass8520ES_PORT_HTTP29200ES_PORT_TRANSPORT29300# # Redis 配置## REDIS_VERSION# - Redis Docker 镜像版本## REDIS_PASSWORD# - Redis 访问密码## REDIS_PORT# - 映射到宿主机的端口# - 默认端口6379# - 当前建议26379 / 36379 / 46379多环境隔离#REDIS_VERSION8.4.0REDIS_PASSWORDPass8520REDIS_PORT26379# # 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_VERSION10.3.0SW_ES_USERelasticSW_ES_PASSWORDPass8520SW_OAP_PORT_GRPC21800SW_OAP_PORT_REST22800SW_UI_PORT28080# # 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/?spm55c5c5db.2ef5001f.0.0.73a53b7cSZtfQh#2-%E9%95%9C%E5%83%8F%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F#NACOS_VERSIONv3.2.0NACOS_PORT_UI28838NACOS_PORT28848NACOS_PORT_GRPC29848NACOS_PORT_RAFT29849NACOS_AUTH_ENABLEtrueNACOS_AUTH_TOKENYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoxMjM0NTYNACOS_AUTH_TOKEN_EXPIRE_SECONDS3600000NACOS_AUTH_IDENTITY_KEYserverIdentityNACOS_AUTH_IDENTITY_VALUEnacosSecurityNACOS_DB_NAMEnacosNACOS_DB_USERnacos_userNACOS_DB_PASSWORDPass8520# # Nginx 配置## NGINX_VERSION# - Nginx Docker 镜像版本## NGINX_PORT_HTTP# - 映射到宿主机的 HTTP 端口# - 默认端口80## NGINX_PORT_HTTPS# - 映射到宿主机的 HTTPS 端口# - 默认端口443#NGINX_VERSION1.30.0NGINX_PORT_HTTP20000NGINX_PORT_HTTPS2443# # 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_VERSIONv3.5.25MINIO_VERSIONRELEASE.2025-09-07T16-13-09ZMINIO_ROOT_USERminio_userMINIO_ROOT_PASSWORDPass8520MINIO_API_PORT29000MINIO_CONSOLE_PORT29001MILVUS_VERSIONv2.6.3MILVUS_PORT29530MILVUS_HEALTH_PORT29091ATTU_VERSIONv2.6.5ATTU_PORT23000 验证env是否生效dockercompose --env-file .env-fmysql/docker-compose.yml config 约定所有配置必须来自.env禁止在 compose 中写死端口/密码/路径