# 安装Docker
sudo apt-get update && sudo apt-get install -y docker.io
sudo systemctl enable --now docker
# 安装Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
microservices/
├── api-gateway/
│ ├── Dockerfile
│ └── src/
├── service1/
│ ├── Dockerfile
│ └── src/
├── service2/
│ ├── Dockerfile
│ └── src/
└── docker-compose.yml
FROM node:16-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
version: '3.8'
services:
api-gateway:
build: ./api-gateway
ports:
- "8080:8080"
depends_on:
- service1
- service2
networks:
- microservices-net
service1:
build: ./service1
ports:
- "3001:3000"
networks:
- microservices-net
service2:
build: ./service2
ports:
- "3002:3000"
networks:
- microservices-net
networks:
microservices-net:
driver: bridge
# 构建并启动所有服务
docker-compose up -d --build
# 查看运行状态
docker-compose ps
# 停止服务
docker-compose down
services:
mongodb:
image: mongo:5.0
volumes:
- mongodb_data:/data/db
networks:
- microservices-net
volumes:
mongodb_data:
services:
service1:
environment:
- NODE_ENV=production
- DB_HOST=mongodb
env_file:
- .env
# 查看日志
docker-compose logs -f
# 资源使用情况
docker stats
# 进入容器
docker-compose exec service1 sh
问题1: 端口冲突 - 解决方案: 检查并修改docker-compose.yml中的端口映射
问题2: 容器间通信失败 - 解决方案: 确保所有服务在同一个Docker网络中
问题3: 构建缓存问题
- 解决方案: 使用docker-compose build --no-cache
重新构建
通过以上步骤,您可以在Linux系统上成功构建并运行一个容器化的微服务架构。根据实际需求,您可以扩展更多服务或添加额外的中间件组件。