环境变量

环境变量可以直接在 Kamal 配置中设置,也可以从 .env 文件加载,用于不应检入 Git 的机密。

从配置中读取环境变量

可以直接在配置文件中设置环境变量。

在部署时,这些变量会传给 docker run 命令。

env:
  DATABASE_HOST: mysql-db1
  DATABASE_PORT: 3306

使用 .env 文件加载所需的环境变量

Kamal 使用 dotenv 自动加载应用程序根目录中 .env 文件中设置的环境变量。

可以使用此文件设置诸如 KAMAL_REGISTRY_PASSWORD 或数据库密码之类的变量。但出于此原因,您必须确保 .env 文件未检入 Git 或包含在您的 Dockerfile 中!格式类似于

KAMAL_REGISTRY_PASSWORD=pw
DB_PASSWORD=secret123

请参阅Envify了解如何使用已生成的 .env 文件。

要传递机密,您应该在 secret 密钥下将其列出。当您这样做时,其他变量需要移到 clear 密钥下。

与明确的值不同,机密不会直接传递到容器, 而是存储在主机上的 env 文件中。该文件不会在部署时更新,只会在运行 kamal envifykamal env push 时更新。

env:
  clear:
    DB_USER: app
  secret:
    - DB_PASSWORD

标签

标签用于向特定主机添加额外的 env 变量。请参阅服务器了解如何标记主机。

标签仅允许出现在顶级 env 配置中(即,不在角色特定 env 下)。

env 变量可以使用如上所述的机密和明确值指定。

env:
  tags:
    <tag1>:
      MYSQL_USER: monitoring
    <tag2>:
      clear:
        MYSQL_USER: readonly
      secret:
        - MYSQL_PASSWORD

示例配置

env:
  clear:
    MYSQL_USER: app
  secret:
    - MYSQL_PASSWORD
  tags:
    monitoring:
      MYSQL_USER: monitoring
    replica:
      clear:
        MYSQL_USER: readonly
      secret:
        - READONLY_PASSWORD