Docker映像:创建内部可用的环境变量
在我的图像上,我想设置一些环境变量,例如:my_VAR,其中它将有一个静态值,例如:my_VAR=12,但我不想通过docker的-e参数或docker compose.yml的环境部分来设置它 此外,当我进行docker构建或docker compose构建时,我不想成为构建参数Docker映像:创建内部可用的环境变量,docker,dockerfile,Docker,Dockerfile,在我的图像上,我想设置一些环境变量,例如:my_VAR,其中它将有一个静态值,例如:my_VAR=12,但我不想通过docker的-e参数或docker compose.yml的环境部分来设置它 此外,当我进行docker构建或docker compose构建时,我不想成为构建参数 version: '3.2' services: db: restart: always image: postgres:alpine volumes: - backup-da
version: '3.2'
services:
db:
restart: always
image: postgres:alpine
volumes:
- backup-data:/var/lib/postgresql/data
env_file:
- ./env/.dev
我怎样才能做到这一点?您可以从入口点脚本中做到这一点 在Dockerfile中:
ENTRYPOINT ["/entrypoint.sh"]
entrypoint.sh示例:
#!/bin/sh
export VAR=foobar
exec /usr/bin/python "$@"
要更灵活并允许使用-e选项进行设置,请执行以下操作:
对于您的问题,最好的解决方案是在docker compose构建中包含一个env_文件
version: '3.2'
services:
db:
restart: always
image: postgres:alpine
volumes:
- backup-data:/var/lib/postgresql/data
env_file:
- ./env/.dev
然后在您的env_文件中:
POSTGRES_USER=my_user
POSTGRES_PASSWORD=my_password
POSTGRES_DB=my_db
那么您希望它从何而来?我只想在内部设置,并且只有在docker容器中运行的软件和脚本才能修改它。您是否查看了Dockerfile中可用的ENV指令?你可以在那里定义静态环境变量,就我所知,你不能这样做;你为什么要这么做?您认为这会解决什么实际问题?但是通过ENV指令,您可以在将图像运行到container时通过-e param更改其值,我不希望出现这种行为。