当前位置: 首页 > news >正文

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 中写死端口/密码/路径
http://www.jsqmd.com/news/1124045/

相关文章:

  • Hermes中文模型评测实战:成本-能力映射与真实任务流评估
  • 如何快速掌握Android Studio代码预览神器CodeGlance插件
  • LV3296与PIC18F96J65在嵌入式数据采集中的黄金组合
  • Mhook未来展望:Windows 11与现代Hook技术趋势的终极指南
  • 5步指南:如何免费让老旧Mac电脑焕发新生升级最新macOS系统
  • 模型端侧部署之 Nvidia Orin 异构硬件调度
  • 智能批量下载:E-Hentai-Downloader的创新解决方案与技术实现
  • Vue-Koa-Demo性能优化终极指南:Webpack打包与静态资源处理最佳实践
  • 干货!不会安装虚拟机?VMware下载和部署详细教学
  • 如何打造你的专属桌面伙伴:DyberPet桌面宠物框架终极指南
  • 信号完整性仿真难题:DDR5/HBM3/PCIe Gen5时代的四个核心瓶颈
  • Blender高效工作流终极指南:从插件到渲染的全方位专业技巧
  • 国产与国际大模型工业级横评:DeepSeek-V4-Pro、GPT-5.5、GLM-5.1、M2.7实战对比
  • 3步搞定TrueNAS Scale上的高性能Minecraft Forge服务器部署
  • 2025年最新E-Hentai-Downloader完整教程:免费一键下载图库神器
  • 如何高效构建智能文档系统:WeKnora终极实践指南
  • 安装GPU环境
  • 3分钟学会:B站视频转文字终极指南,免费开源神器bili2text完整教程
  • Tabled核心架构揭秘:深度学习模型如何识别复杂表格结构
  • 简单大话筛微信小程序游戏源码
  • ConvLSTM 实战:PyTorch 实现时空序列预测,在 Moving MNIST 上达到 0.85+ SSIM
  • 合同管理系统的实施-开发费用问题
  • 终极指南:用DyberPet打造属于你的智能桌面伙伴
  • Segment Anything模型实战:如何让通用分割模型适应你的专业领域?
  • SWEET32漏洞深度解析:从生日攻击原理到企业TLS/SSL安全加固实战
  • 格式双雄:WMI的JSON迷踪与C#的XML密室
  • TwelveMonkeys ImageIO:Java图像格式处理的终极解决方案
  • 《大模型实战指南》—— 面向软件开发者的系统性入门5
  • 探索vue-koa-demo:为什么这个全栈Demo值得每个开发者学习
  • Spring for Android架构设计:从客户端到服务端的完整通信方案终极指南