Привет! Да, можно. Как один из способов это загрузить секрет в файл и потом закинуть его в переменную окружения:
1. Создание секрета в swarm
echo "my_super_secret" | docker secret create db_pass -
2. Монтируем секрет в файл
// docker-compose.yml
version: "3.8"
services:
app:
image: my_app
secrets:
- db_pass
environment:
DB_PASSWORD_FILE: /run/secrets/db_pass
deploy:
mode: replicated
replicas: 1
secrets:
db_pass:
external: true
3. В приложении читаем переменную из файла
const dbPassword = process.env.DB_PASSWORD_FILE
? fs.readFileSync(process.env.DB_PASSWORD_FILE, 'utf8').trim()
: "default_pass";