假设你有一个现代 Web 应用,结构是:
software-city-app/
├── frontend/
├── api/
└── compose.yamlAPI 的 Dockerfile:
FROM node:22-alpine AS deps
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci --omit=dev
FROM node:22-alpine
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]总调度表:
services:
api:
build: ./api
ports:
- "3000:3000"
environment:
DATABASE_URL: postgres://app:secret@db:5432/app
REDIS_URL: redis://redis:6379
depends_on:
- db
- redis
db:
image: postgres:17
environment:
POSTGRES_DB: app
POSTGRES_USER: app
POSTGRES_PASSWORD: secret
volumes:
- dbdata:/var/lib/postgresql/data
redis:
image: redis:8
volumes:
dbdata:启动:
docker compose up -d --build这套模型的意思非常清楚:
应用编队
├── api 业务货柜
├── db 数据货柜
├── redis 缓存货柜
└── dbdata 独立仓储区