无法在docker-compose上设置文件密钥密码

时间:2020-07-28 16:13:30

标签: docker-compose

我想使用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,而不会产生任何麻烦。我没有定义外部机密,但我不愿意。有可能吗?

1 个答案:

答案 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