Pass sensitive data to containers with Docker Secrets — safer than plain environment variables.
Docker Secrets
# Create secret
echo "mypassword" | docker secret create db_password -
docker secret ls
# In Compose (Swarm mode)
secrets:
db_password:
external: true
services:
web:
secrets: [db_password]
# Mounted at: /run/secrets/db_password
# BuildKit secret (build-time, never in image layers)
docker build --secret id=npmrc,src=$HOME/.npmrc .
# Dockerfile:
RUN --mount=type=secret,id=npmrc,target=/root/.npmrc npm ci