Docker Compose secrets: подключить пароль из файла

Категория: docker · Язык: YAML · Обновлено:

Compose выдаёт secret только сервису, где он указан, и монтирует его как файл в /run/secrets/. В примере официальный образ PostgreSQL читает пароль через POSTGRES_PASSWORD_FILE, поэтому значение не хранится в environment или Dockerfile.

Подключить файл к PostgreSQL

Задайте пароль в ./secrets/db_password.txt, затем добавьте секрет в Compose-файл:

YAML
services:
  db:
    image: postgres:16
    environment:
      POSTGRES_PASSWORD_FILE: /run/secrets/db_password
    secrets:
      - db_password

secrets:
  db_password:
    file: ./secrets/db_password.txt

Сервис получит файл /run/secrets/db_password; другие сервисы его не увидят, пока вы явно не добавите им этот secret. Путь file считается относительно Compose-файла.

Файловые secrets Compose поддерживаются для Linux-контейнеров и используют bind mount с хоста. Ограничьте доступ к исходному файлу правами ОС и добавьте secrets/ в .gitignore: механизм не шифрует файл на хосте и не заменяет менеджер секретов для распределённого кластера.

Документация: secrets в Docker Compose, official Postgres image: переменные *_FILE.