我想使用docker-compose访问一个秘密文件。我遵循许多教程并重现了结构。容器启动,但是当我需要登录时,要输入的正确字符串是“ / run / secrets / sec_pgadmin_default_email”。我希望登录名是我的秘密文件中的那个:admin。在这个秘密文件pgadmin_default_email.txt中,只有单词admin。我不知道此文件的结构是否良好。应该是字典还是其他?
version: '3.8' services: pgadmin4:
build:
context: ./dockerfiles/
dockerfile: dockerfile_pgadmin4
image: img_pgadmin
container_name: cont_pgadmin4
ports:
- "80:80"
secrets:
- sec_pgadmin_default_email
- sec_pgadmin_default_password
environment:
- PGADMIN_LISTEN_PORT=80
- PGADMIN_DEFAULT_EMAIL=/run/secrets/sec_pgadmin_default_email
- PGADMIN_DEFAULT_PASSWORD=/run/secrets/sec_pgadmin_default_password
secrets:
sec_pgadmin_default_email:
file: ./.secrets/pgadmin_default_email.txt
sec_pgadmin_default_password:
file: ./.secrets/pgadmin_default_password.txt
PS我仅使用命令docker-compose up -d
,而不会产生任何麻烦。我没有定义外部机密,但我不愿意。有可能吗?
答案 0 :(得分:0)
环境变量将设置为包含实际值的文件的路径。不是实际值本身。
例如,在Go中,您可以执行以下操作:
var pgAdminDefaultEmailFile = os.Getenv("PGADMIN_DEFAULT_EMAIL") // get the file
pgAdminDefaultEmailValue, err := ioutil.ReadFile(pgAdminDefaultEmailFile) // get the value
if err != nil {
log.Fatal(err)
}
pgAdminDefaultEmail = string(pgAdminDefaultEmailValue) // parse out the value