Docker Compose secrets: подключить пароль из файла
Compose выдаёт secret только сервису, где он указан, и монтирует его как файл в /run/secrets/. В примере официальный образ PostgreSQL читает пароль через POSTGRES_PASSWORD_FILE, поэтому значение не хранится в environment или Dockerfile.
Подключить файл к PostgreSQL
Задайте пароль в ./secrets/db_password.txt, затем добавьте секрет в Compose-файл:
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.