Mid #env#secrets#security#build-arg
Quản lý biến môi trường và secret trong Docker
⚡ Trả lời nhanh
Cấu hình không nhạy cảm truyền qua ENV hoặc --env-file lúc chạy. Secret không được ghi vào Dockerfile (ENV/ARG) vì lưu trong layer và docker history. Dùng Docker/Compose secrets (mount file), BuildKit --mount=type=secret khi build, hoặc secret manager của orchestrator.
docker run --env-file .env -e LOG_LEVEL=info myapp
# SAI: nằm vĩnh viễn trong layer
ENV API_KEY=abc123
# Đúng: secret chỉ tồn tại trong bước build, không vào image
RUN --mount=type=secret,id=npmrc,target=/root/.npmrc npm ci
docker build --secret id=npmrc,src=$HOME/.npmrc .
services:
api:
secrets: [db_password] # có tại /run/secrets/db_password
secrets:
db_password:
file: ./db_password.txt