docker-containerization
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseDocker & Containerization
Docker & 容器化
Best practices for Docker and containerized applications.
Docker与容器化应用的最佳实践。
When to Use
适用场景
- Containerizing applications
- Writing or optimizing Dockerfiles
- Setting up development or production environments
- 应用容器化
- 编写或优化Dockerfile
- 搭建开发或生产环境
Dockerfile Best Practices
Dockerfile最佳实践
Multi-Stage Builds
多阶段构建
dockerfile
undefineddockerfile
undefinedBuild stage
Build stage
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
Production stage
Production stage
FROM node:20-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
EXPOSE 3000
CMD ["node", "dist/index.js"]
undefinedFROM node:20-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
EXPOSE 3000
CMD ["node", "dist/index.js"]
undefinedSecurity Practices
安全实践
dockerfile
undefineddockerfile
undefinedUse specific versions, not latest
Use specific versions, not latest
FROM python:3.11-slim
FROM python:3.11-slim
Create non-root user
Create non-root user
RUN useradd -m appuser
USER appuser
RUN useradd -m appuser
USER appuser
Minimize layers and cache
Minimize layers and cache
RUN apt-get update && apt-get install -y --no-install-recommends
package
&& rm -rf /var/lib/apt/lists/*
package
&& rm -rf /var/lib/apt/lists/*
undefinedRUN apt-get update && apt-get install -y --no-install-recommends
package
&& rm -rf /var/lib/apt/lists/*
package
&& rm -rf /var/lib/apt/lists/*
undefined.dockerignore
.dockerignore
node_modules
.git
*.log
.env
.DS_Storenode_modules
.git
*.log
.env
.DS_StoreDocker Compose
Docker Compose
yaml
version: '3.8'
services:
app:
build: .
ports:
- "3000:3000"
environment:
- NODE_ENV=production
depends_on:
- db
db:
image: postgres:15-alpine
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:yaml
version: '3.8'
services:
app:
build: .
ports:
- "3000:3000"
environment:
- NODE_ENV=production
depends_on:
- db
db:
image: postgres:15-alpine
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata: