0

我有一个使用秘密的简单 docker compose。但是我一直无法访问这个秘密。日志显示/run/secrets/username正在服务器中传递,但不显示实际用户名。我的设置有什么问题?如何在我的服务中从 DB_USERNAME 获取秘密值?

version: "3.9"

services:
  ...
  bank-microservice:
    image: ${IMAGE_BANK}
    restart: on-failure
    networks:
      - backend
    expose:
      - 80
    secrets:
      - username
    environment:
      - DB_USERNAME=/run/secrets/username
    env_file:
      - ./env/microservice.env
    depends_on:
      - db
secrets:
  username:
    file: ./secrets/username
...
4

1 回答 1

1

设置机密只会在/run/secrets. 如果您想将该值放入变量中,则需要在容器启动过程中自己执行此操作。

例如,这样的ENTRYPOINT脚本/run/secrets/username可以作为DB_USERNAME

#!/bin/sh

if [ -f /run/secrets/username ]; then
  export DB_USERNAME=$(cat /run/secrets/username)
fi

exec "$@"
于 2022-02-06T21:06:23.343 回答