容器化和编排全栈应用已成为开发者的必备技能。本文将通过实际案例演示如何使用Docker和Kubernetes部署一个Node.js后端 + React前端的应用。
项目结构
project/
├── backend/
│ ├── Dockerfile
│ ├── package.json
│ └── index.js
├── frontend/
│ ├── Dockerfile
│ ├── package.json
│ └── src/
└── k8s/
├── backend-deployment.yaml
└── frontend-deployment.yaml后端Dockerfile
FROM node:16-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 5000
CMD ["node", "index.js"]前端Dockerfile
FROM node:16-alpine as build
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
FROM nginx:alpine
COPY --from=build /app/build /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]使用Docker Compose本地开发
version: '3'
services:
backend:
build: ./backend
ports:
- "5000:5000"
environment:
- NODE_ENV=development
frontend:
build: ./frontend
ports:
- "3000:80"
depends_on:
- backendKubernetes部署
在生产环境中,使用Kubernetes进行部署可以实现自动扩缩容、自愈等能力。
总结
通过Docker,我们可以轻松实现开发、测试、生产环境的一致性,大大简化了全栈应用的部署流程。