环境变量
环境变量可以直接在 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 envify
或 kamal 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