如何在 docker compose 中配置密码?
How do I configure a secret in docker compose?
我有一个简单的 docker 组合,它使用了一个秘密。但是我一直无法访问这个秘密。日志显示在服务器中传递的 /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
...
设置秘密只会在 /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 "$@"
我有一个简单的 docker 组合,它使用了一个秘密。但是我一直无法访问这个秘密。日志显示在服务器中传递的 /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
...
设置秘密只会在 /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 "$@"