Skip to main content

Biến môi trường

landing_page_backend đọc cấu hình runtime ở config/env_config.exs. Tệp mẫu cho local là .dev.env.

Quy ước

  • Docker: env được nạp qua env_file trong docker-compose.yml.
  • Native: set -a; source .env; set +a trước khi mix phx.server.
  • Không commit secret prod. .dev.env chỉ chứa giá trị dev nội bộ.

Bảng tham chiếu

Lõi

KhoáMục đích
MIX_ENVdev / prod / test.
NODE_ENVBuild asset FE (development / production).
JWT_KEYSecret ký JWT.
SECRET_KEY_BASESecret cho Phoenix endpoint (prod inject qua vault).
BUILDER_HOSTHost của builder (localhost khi dev).
PHX_HOSTHost Phoenix endpoint (prod).
PORTPort HTTP (mặc định 4000).

Database

KhoáMục đích
DATABASE_URLPostgres URL chính.
REPLICA_DATABASE_URLURL replica (khi bật).
REDIS_HOST / REDIS_PORT / REDIS_PASSWORD / REDIS_DBRedis.
ELASTIC_HOST / ELASTIC_PORT / ELASTIC_USERNAME / ELASTIC_PASSWORDElasticsearch.
QUESTDB_HOST / QUESTDB_HTTP_PORT / QUESTDB_ILP_PORTQuestDB.

RabbitMQ

KhoáMục đích
R_HOSTHost.
R_PORTCổng AMQP.
R_USERNAMEUser.
R_PASSWORDPassword.

Kafka

KhoáMục đích
KAFKA1_HOSTHost broker 1.
KAFKA1_PORTCổng broker 1.
KAFKA2_HOSTHost broker 2 (cluster).
KAFKA2_PORTCổng broker 2.

AWS S3

KhoáMục đích
AWS_ACCESS_KEY_IDAccess key.
AWS_SECRET_ACCESS_KEYSecret.
AWS_REGIONRegion.
S3_BUCKET_PUBLICBucket công khai.
S3_BUCKET_PRIVATEBucket private.

Pancake và OAuth

KhoáMục đích
PANCAKEID_CLIENT_ID / _SECRETOAuth Pancake ID.
PANCAKE_SECRET_KEYKhoá ký nội bộ Pancake.
AUTH_URLURL Pancake auth.
GOOGLE_CLIENT_ID / _SECRET_KEY / _API_KEYGoogle API.
FACEBOOK_APP_ID / _SECRET_KEYFacebook (khi dùng).

Cầu nối nội bộ

KhoáMục đích
WEBCMS_APIEndpoint WebCMS (webcms_app:4000).
WEBCMS_SECRET_KEYSecret RPC WebCMS.
STORECAKE_SECRET_KEYKý request sang builderx_api.
WEBCAKE_SECRET_KEYSecret nội bộ của Webcake.
SUSA_SECRET_KEYĐồng bộ Susa.
POS_SECRET_KEYSecret POS.
SERVICE_SECRET_KEYSecret service tổng quát.
CRM_SECRET_KEYSecret CRM.
HOST_PKEURL dịch vụ rút gọn / PKE.
ANALYTICS_HOST / _PORTDịch vụ analytics nội bộ.

Stripe / Paypal

KhoáMục đích
STRIPE_SKStripe secret key.
PAYPAL_CLIENT_IDPaypal client.
PAYPAL_SECRET_IDPaypal secret.
PAYPAL_HOSTEndpoint Paypal (sandbox / prod).

Nền tảng eCommerce

KhoáMục đích
SAPO_CLIENT_ID / _SECRETSapo OAuth.
SHOPIFY_CLIENT_ID / _SECRETShopify OAuth.
HARAVAN_CLIENT_ID / _SECRETHaravan OAuth.

AI

KhoáMục đích
DEEPINFRA_API_KEYDeepInfra text.
DEEPINFRA_API_KEY_IMAGEDeepInfra image.
GEMINI_API_KEYGoogle Gemini.

Cảnh báo và thông báo

KhoáMục đích
TELEBOT_ALERT_TOKENBot Telegram cảnh báo.
TELEGROUP_ALERTID group Telegram.
SLACK_CLIENT_ID / _SECRET_IDSlack.
BOTCAKE_SECRET_KEYCầu nối Botcake.

Asset và công cụ

KhoáMục đích
CLIPPING_MAGIC_IDID Clipping Magic.
CLIPPING_MAGIC_KEYKey Clipping Magic.
CLIPPING_MAGIC_TESTtrue khi dùng môi trường test.
B2C_TOKEN_GHTKToken GHTK B2C.
GITHUB_TOKENGitHub token (CI / kiểm tra release).

Email

KhoáMục đích
EMAIL_USERNAMEUser SMTP.
EMAIL_PASSWORDPassword / app password SMTP.
SMTP_HOST / SMTP_PORTOverride host / port SMTP nếu cần.

Sentry

KhoáMục đích
SENTRY_DSNDSN dự án.
SENTRY_ENVdev / staging / prod.

Mẹo

  • Trong IEx: System.get_env("R_HOST").
  • Đổi .env cần restart container.
  • Thiếu biến bắt buộc → service crash khi boot; log sẽ chỉ rõ khoá nào thiếu.
  • Secret prod nạp qua Ansible vault, không qua .env.

Thêm biến mới

  1. Đọc trong config/env_config.exs.
  2. Thêm placeholder vào .dev.env.
  3. Ghi nhận tại đây.
  4. Phối hợp ops cập nhật Ansible vault.