在我的图像上,我想设置一些环境变量,例如:MY_VAR
它将具有静态值,例如:MY_VAR=12
但我不希望能够通过docker的-e
参数或通过docker-compose.yml的environment
部分进行设置。
此外,当我做docker build
或docker-compose build
时,我不想成为构建参数
我该怎么做?
您可以从入口点脚本执行此操作。
在您的 Dockerfile 中:
ENTRYPOINT ["/entrypoint.sh"]
示例 entrypoint.sh:
#!/bin/sh
export VAR=foobar
exec /usr/bin/python "$@"
要更加灵活并允许使用-e
选项进行设置:
export VAR=${VAR:-"foobar"}
...
您的问题的最佳解决方案是在 docker-compose 构建中包含env_file
version: '3.2'
services:
db:
restart: always
image: postgres:alpine
volumes:
- backup-data:/var/lib/postgresql/data
env_file:
- ./env/.dev
然后在您的env_file中:
POSTGRES_USER=my_user
POSTGRES_PASSWORD=my_password
POSTGRES_DB=my_db