Forráskód Böngészése

feat: 新增 .env.produ 并扩展 APP_ENV 支持生产环境

从 produ 分支提取生产配置,统一四环境通过 APP_ENV 加载 .env.{env}。

Co-authored-by: Cursor <cursoragent@cursor.com>
天空之城 6 órája
szülő
commit
67c1a58cf8
5 módosított fájl, 54 hozzáadás és 7 törlés
  1. 3 2
      .env.example
  2. 45 0
      .env.produ
  3. 1 1
      .gitignore
  4. 1 1
      alien_gateway/Dockerfile
  5. 4 3
      alien_gateway/config.py

+ 3 - 2
.env.example

@@ -2,14 +2,15 @@
 # Alien Cloud Python - 环境变量模板(入库,不含敏感信息)
 # Alien Cloud Python - 环境变量模板(入库,不含敏感信息)
 #
 #
 # 使用方法:
 # 使用方法:
-#   1) 复制为 .env.dev / .env.sit / .env.uat(按环境填充)
+#   1) 复制为 .env.dev / .env.sit / .env.uat / .env.produ(按环境填充)
 #   2) 启动服务前设置 APP_ENV,例如:
 #   2) 启动服务前设置 APP_ENV,例如:
 #        export APP_ENV=dev        # 本地开发
 #        export APP_ENV=dev        # 本地开发
 #        docker run -e APP_ENV=uat ...
 #        docker run -e APP_ENV=uat ...
+#        docker run -e APP_ENV=produ ...
 #   3) config.py 会自动加载 .env.${APP_ENV}
 #   3) config.py 会自动加载 .env.${APP_ENV}
 ################################################################################
 ################################################################################
 
 
-# 当前环境标识(dev/sit/uat),通常通过 docker run -e APP_ENV=xxx 注入而非写在文件里
+# 当前环境标识(dev/sit/uat/produ),通常通过 docker run -e APP_ENV=xxx 注入而非写在文件里
 # APP_ENV=dev
 # APP_ENV=dev
 
 
 # -------------------- 鉴权 --------------------
 # -------------------- 鉴权 --------------------

+ 45 - 0
.env.produ

@@ -0,0 +1,45 @@
+################################################################################
+# PRODU 环境(生产)
+# 与 .env.dev / .env.sit / .env.uat 同级,由 APP_ENV=produ 加载。模板见 .env.example
+#
+# 生产 Jenkins 部署时通常使用服务器上的 .env.produ(--env-file),
+# 并挂载到容器 /app/.env.produ;容器内通过 -e APP_ENV=produ 读取本文件。
+################################################################################
+
+SECRET_KEY=your-super-secret-key-change-me
+ALGORITHM=HS256
+ACCESS_TOKEN_EXPIRE_MINUTES=10080
+
+# 数据库(与 Java alien_produ 一致)
+DB_USER=root
+DB_PASSWORD=Alien123456
+DB_HOST=ailiendb.mysql.rds.aliyuncs.com
+DB_PORT=53306
+DB_NAME=alien_produ
+
+# Redis(单机与哨兵二选一;生产常用阿里云 RDS Redis)
+REDIS_URL=redis://:Alien123456@r-alien0.redis.rds.aliyuncs.com:6379/0
+REDIS_SENTINELS=
+REDIS_MASTER_NAME=mymaster
+REDIS_PASSWORD=
+REDIS_SENTINEL_PASSWORD=
+
+# 服务端口(生产 store 监听 48001;gateway 容器内 43333,宿主机映射 33333)
+GATEWAY_PORT=43333
+STORE_PORT=48001
+CONTRACT_PORT=8002
+LAWYER_PORT=8004
+
+# 下游服务地址(生产 Jenkins 部署时用 -e 覆盖为容器名:端口)
+STORE_BASE_URL=http://127.0.0.1:48001
+CONTRACT_BASE_URL=http://127.0.0.1:8002
+
+# e签宝(生产域名)
+ESIGN_CALLBACK_URL=https://prod.ailien.shop/api/contract/esign/callback
+ESIGN_DEVELOPER_CALLBACK_URL=https://prod.ailien.shop/api/contract/esign/callback
+
+# 阿里云短信
+ALIYUN_SMS_SIGN_NAME_CONTRACT=爱丽恩严大连商务科技
+ALIYUN_SMS_TEMPLATE_CODE_CONTRACT=SMS_501820309
+ALIYUN_ACCESS_KEY_ID=LTAI5t77CS9gD7JMkMAjD2vF
+ALIYUN_ACCESS_KEY_SECRET=jLYGPpaJuc7NqmRdLvu1ObAS9CJFB8

+ 1 - 1
.gitignore

@@ -101,7 +101,7 @@ celerybeat.pid
 *.sage.py
 *.sage.py
 
 
 # Environments
 # Environments
-# 私有部署:三个环境的真实配置 .env.dev / .env.sit / .env.uat 入库;
+# 私有部署:各环境真实配置 .env.dev / .env.sit / .env.uat / .env.produ 入库;
 # 本地个人覆盖文件不入库。
 # 本地个人覆盖文件不入库。
 .env
 .env
 .env.local
 .env.local

+ 1 - 1
alien_gateway/Dockerfile

@@ -17,7 +17,7 @@ RUN poetry source add --priority=primary tsinghua https://pypi.tuna.tsinghua.edu
 
 
 COPY . .
 COPY . .
 
 
-# 默认 dev 环境,部署时通过 -e APP_ENV=sit/uat 覆盖
+# 默认 dev 环境,部署时通过 -e APP_ENV=sit/uat/produ 覆盖
 ARG APP_ENV=dev
 ARG APP_ENV=dev
 ENV APP_ENV=${APP_ENV}
 ENV APP_ENV=${APP_ENV}
 
 

+ 4 - 3
alien_gateway/config.py

@@ -4,9 +4,10 @@ from urllib.parse import quote
 import os
 import os
 
 
 # 通过环境变量 APP_ENV 选择 .env 文件,默认 dev:
 # 通过环境变量 APP_ENV 选择 .env 文件,默认 dev:
-# - 本地开发:APP_ENV=dev  -> .env.dev
-# - 测试环境:APP_ENV=sit  -> .env.sit
-# - UAT环境:APP_ENV=uat   -> .env.uat
+# - 本地开发:APP_ENV=dev   -> .env.dev
+# - 测试环境:APP_ENV=sit   -> .env.sit
+# - UAT 环境:APP_ENV=uat   -> .env.uat
+# - 生产环境:APP_ENV=produ -> .env.produ
 APP_ENV = os.getenv("APP_ENV", "dev")
 APP_ENV = os.getenv("APP_ENV", "dev")
 _ENV_FILE = f".env.{APP_ENV}"
 _ENV_FILE = f".env.{APP_ENV}"