docker compose实战
时间: 2025-01-11 20:45:20 浏览: 38
### 使用 Docker Compose 构建多容器 Web 应用
为了更好地理解如何使用 Docker Compose 来构建和管理多容器应用程序,下面提供了一个具体的实战案例。此案例展示了如何创建一个多层Web应用,该应用由前端、后端以及数据库组成。
#### 创建项目结构
首先建立项目的目录结构如下:
```bash
myapp/
├── app/ # 后端代码位置
│ └── main.py # Python Flask API入口文件
├── web/ # 前端静态资源存放处
│ ├── index.html # HTML页面模板
└── docker-compose.yml # 定义服务配置的YAML文件
```
#### 编写 `docker-compose.yml` 文件
在此文件中定义三个主要的服务:web服务器(Nginx),API服务器(Flask), 和 数据库(PostgreSQL)。
```yaml
version: '3'
services:
db:
image: postgres
environment:
POSTGRES_DB: exampledb
POSTGRES_USER: user
POSTGRES_PASSWORD: password
backend:
build: ./app
command: python /code/main.py
volumes:
- "5000:5000"
depends_on:
- db
frontend:
build: ./web
ports:
- "80:80"
depends_on:
- backend
```
上述 YAML 文件描述了整个系统的架构,并指定了各个组件之间的依赖关系[^1]。
#### 准备Dockerfile用于前后端镜像构建
对于后端部分(`main.py`),编写简单的Flask RESTful接口;而对于前端,则只需简单地托管HTML文档即可。因此分别在对应的子文件夹下添加两个名为 `Dockerfile` 的文本文件:
**Backend (Python)**
位于 `/app/Dockerfile`
```dockerfile
FROM python:3.9-slim-buster
WORKDIR /code
COPY . .
RUN pip install flask psycopg2-binary requests
EXPOSE 5000
CMD ["python", "./main.py"]
```
**Frontend (Nginx)**
位于 `/web/Dockerfile`
```nginx
FROM nginx:latest
COPY ./index.html /usr/share/nginx/html/index.html
```
#### 测试并运行应用
完成以上设置之后就可以利用 Docker Compose 工具轻松启动这个完整的三层架构的应用程序了。进入包含 `docker-compose.yml` 文件所在的根目录执行命令:
```bash
$ docker-compose up --build
```
这将会自动下载所需的官方基础镜像(postgres, python, nginx),按照给定路径去查找本地源码来构建自定义镜像,最后依照指定的方式连接起这些独立运作着的小型虚拟机——即所谓的“容器”。
一旦所有进程都成功启动完毕,访问 http://localhost 即可看到已部署好的网站界面,而通过发送 HTTP 请求到 http://localhost:5000 可以调用后台提供的RESTful API 接口[^2]。
阅读全文
相关推荐
















