💓 博客主页:瑕疵的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
在微服务架构中,服务之间需要相互通信。Docker Compose 提供了一个内部网络,使得服务之间可以通过服务名进行通信。
例如,在后端服务中,可以通过以下方式连接到数据库:
import psycopg2
conn = psycopg2.connect(
host='db',
port=5432,
user='myuser',
password='mypassword',
dbname='mydb'
)
在生产环境中,通常会使用环境变量来管理配置信息。Docker Compose 支持从
.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 构建一个简单的微服务架构。Docker Compose 的强大之处在于它能够简化多服务应用的部署过程,使得开发者可以更专注于业务逻辑的实现。
Docker Compose 使得微服务架构的构建变得更加简单和高效。