首页 > 解决方案 > 在 docker compose 中为运行状况检查指定 postgres 参数的安全方法

问题描述

我正在使用 Secrets 来管理用户名、密码和 dbname,并使用 Docker 堆栈将 Postgres 作为数据库。我现在想使用 Docker 提供的健康检查功能。

码头工人-compose.yml

x-db-secrets: &db_secrets
    - psql_user
    - psql_pass
    - psql_dbname

services:
  db:
    image: postgres:13.1
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    environment:
      - POSTGRES_USER_FILE=/run/secrets/psql_user
      - POSTGRES_DB_FILE=/run/secrets/psql_dbname
      - POSTGRES_PASSWORD_FILE=/run/secrets/psql_pass
    secrets: *db_secrets
    healthcheck:
      test: pg_isready -U myuser -d db_prod
      interval: 10s
      timeout: 3s
      retries: 3

(... other services...)

volumes:
  postgres_data:
  static_content:
  media_content:

secrets:
  psql_user:
    external: true
  psql_pass:
    external: true
  psql_dbname:
    external: true

正如本healthcheck:节中所指出的,我将使用运行状况检查公开数据库用户名和数据库名称。我的问题(根据答案进行一些跟进):

想法?解决方法?

额外细节:

标签: dockerhealth-checkdocker-secrets

解决方案


由于 docker 套接字在主机上,因此 healthcheck 命令是通过 可见的docker inspect,因此只有在可以从用户名和/或 dbname 中检索到密码时才(真的)很重要。

可以说它总是很重要,但这取决于您的需求。


推荐阅读