💓 博客主页:瑕疵的CSDN主页
📝 Gitee主页:瑕疵的gitee主页
⏩ 文章专栏:《热点资讯》
利用Docker Compose构建微服务架构
- 引言
- Docker Compose 简介
- 安装 Docker Compose
- 创建项目结构
- 编写 Dockerfile
- 前端 Dockerfile
- 后端 Dockerfile
- 数据库 Dockerfile
 
- 编写 docker-compose.yml
- 启动服务
- 访问应用
- 关闭服务
 
- 微服务之间的通信
- 环境变量
- 总结
 
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/
├── frontend/
│   └── Dockerfile
├── backend/
│   ├── app.py
│   └── Dockerfile
├── db/
│   └── Dockerfile
└── docker-compose.yml
frontend 目录下创建 
Dockerfile: 
 
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
backend 目录下创建 
Dockerfile: 
 
FROM python:3.8-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["python", "app.py"]
db 目录下创建 
Dockerfile: 
 
FROM postgres:13
ENV POSTGRES_USER=myuser
ENV POSTGRES_PASSWORD=mypassword
ENV POSTGRES_DB=mydb
docker-compose.yml 文件: 
 
version: '3'
services:
  frontend:
    build: ./frontend
    ports:
      - "3000:3000"
    depends_on:
      - backend
  backend:
    build: ./backend
    ports:
      - "5000:5000"
    depends_on:
      - db
  db:
    build: ./db
    environment:
      POSTGRES_USER: myuser
      POSTGRES_PASSWORD: mypassword
      POSTGRES_DB: mydb
docker-compose up
http://localhost:3000,你应该能够看到前端应用。后端服务将在 
http://localhost:5000 上运行。 
 
 
要关闭所有服务,可以在终端中按 
Ctrl+C,或者运行以下命令: 
 
docker-compose down
例如,在后端服务中,可以通过以下方式连接到数据库:
import psycopg2
conn = psycopg2.connect(
    host='db',
    port=5432,
    user='myuser',
    password='mypassword',
    dbname='mydb'
)
.env 文件中读取环境变量。 
 
在项目根目录下创建 .env 文件:
POSTGRES_USER=myuser
POSTGRES_PASSWORD=mypassword
POSTGRES_DB=mydb
然后在 docker-compose.yml 中引用这些环境变量:
version: '3'
services:
  frontend:
    build: ./frontend
    ports:
      - "3000:3000"
    depends_on:
      - backend
  backend:
    build: ./backend
    ports:
      - "5000:5000"
    depends_on:
      - db
    environment:
      - DATABASE_HOST=db
      - DATABASE_PORT=5432
      - DATABASE_USER=${POSTGRES_USER}
      - DATABASE_PASSWORD=${POSTGRES_PASSWORD}
      - DATABASE_NAME=${POSTGRES_DB}
  db:
    build: ./db
    environment:
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: ${POSTGRES_DB}
 
 
 
Docker Compose 使得微服务架构的构建变得更加简单和高效。
 



















