# voitrans · dev 开发环境(容器运行时配置) # 仓库地址 REGISTRY 由 dev-deploy.sh 写死注入,这里不填。 # 依赖的 etcd/mysql/redis/nats 在 DOCKER_NETWORK 网络内,用容器名连接。 # ── 镜像 / 容器 ── # TAG = 当前运行的镜像版本。dev 固定 dev-latest;prod 部署成功后由 prod-deploy.sh 自动写回为本次版本号(如 0.2.1), # 所以服务器上 cat .env 的这一行就是当前实际运行版本,便于排查是否环境/版本问题。 TAG=dev-latest PLATFORM=linux/amd64 DOCKER_NETWORK=1panel-network # ── 集群 / 服务发现 ── CLUSTER_TAG=voitrans-a11-dev # 集群标签:隔离 dev 与生产,避免互相发现 ETCD_SERVERS=etcd:2379 # ETCD 容器名:端口 # ── 存储(容器名连接;密码特殊字符在 DSN 里需 URL 编码 & → %26)── DB_ADMIN_DSN=root:li13451234@tcp(mysql:3306)/voitrans?charset=utf8mb4&parseTime=True&loc=Local DB_DEVICE_DSN=postgresql://postgres:postgres@postgres:5432/postgres?sslmode=disable DB_DEVICE_READ_DSN= REDIS_ADDR=redis:6379 REDIS_PASSWORD=li13451234 REDIS_DB=1 REDIS_KEY_PREFIX=VoitransDev # ── NATS(统计快照推送到 console,须与 console 端一致)── NATS_URL=nats://nats:4222 # ── 业务配置字段解密(须与 console 的 FIELD_ENCRYPT_KEY 完全相同)── # console 后台把邮件/短信/支付等密钥以 AES-256-GCM 密文写进「应用业务库」;本服务启动时用这把 key 解密。 # ⚠️ 留空或与 console 不一致时,解密会「静默失败并把密文当明文用」——例如把密文当 Resend API Key # 发出去,表现为 401 "API key is invalid",而后台却显示配置已填好,极难排查。 FIELD_ENCRYPT_KEY= # ── 统计上报(须与 console 注册表中的应用名/区域一致)── ANALYZE_APP_NAME=voitrans-a11-dev ANALYZE_REGION=1 # ── 业务杂项 ── LOG_DEBUG=true GATEWAY_TOKEN_KEY=dev-change-me # v2 配置接口响应加密 AES key(16/24/32 字节),须与 Flutter ApiCrypto._key 完全一致;留空=不加密 GATEWAY_ENCRYPT_KEY= API_ADMIN_ACCOUNT=admin API_ADMIN_PASSWORD=123 API_SITE_NAME=Voitrans(开发) API_CURRENCY_TYPE=0 MCP_ADDR=http://localhost:7300 # ── 可选 ── AZURE_TRANSLATE_KEY= TIMER_DOUBAO_APIKEY= TIMER_DOUBAO_BOTID= TIMER_DOUBAO_ROLE= # 部署目标(DEV_HOST/USER/KEY/DIR)与仓库凭据已写死在 dev-deploy.sh 顶部,不在此文件填。