Docker Compose 的使用及案例分析

Docker Compose 是 Docker 官方提供的一个用于定义和运行多个 Docker 容器的工具。它可以通过一个 YAML 文件来定义应用的各个服务,然后使用一个命令就可以启动、停止和重启整个应用。

Docker Compose 的安装

Docker Compose 可以通过 pip 工具安装,前提是已经安装了 Docker。如果还没有安装 Docker,请先参考 Docker 官方文档进行安装。

安装 Docker Compose 的命令如下:

安装成功后,可以通过以下命令来检查版本:

Docker Compose 的使用

编写 Docker Compose 文件

Docker Compose 的核心是一个 YAML 文件,用于定义应用的各个服务。以下是一个简单的示例:

这个 YAML 文件定义了两个服务:web 和 redis。web 服务使用当前目录下的 Dockerfile 来构建镜像,并将容器的 5000 端口映射到主机的 5000 端口;redis 服务使用官方的 Redis 镜像。

启动应用

使用以下命令来启动应用:

这个命令会启动所有定义的服务,并将它们的日志输出到终端。如果想在后台运行,可以使用 -d 参数:

停止应用

使用以下命令来停止应用:

这个命令会停止并删除所有容器和网络。

其他常用命令

以下是一些其他常用的 Docker Compose 命令:

  • docker-compose ps:查看当前运行的容器。
  • docker-compose logs:查看容器的日志输出。
  • docker-compose build:构建所有服务的镜像。
  • docker-compose restart:重启所有服务。
  • docker-compose stop:停止所有服务。

Docker Compose 的案例分析

Flask 应用

以下是一个使用 Docker Compose 运行 Flask 应用的示例。

Dockerfile

这个 Dockerfile 使用 Python 3.7 的 Alpine 版本作为基础镜像,并安装应用所需的 Python 包。最后启动应用的入口是 app.py 文件。

docker-compose.yml

这个 YAML 文件定义了两个服务:web 和 db。web 服务使用当前目录下的 Dockerfile 来构建镜像,并将容器的 5000 端口映射到主机的 5000 端口;另外还将当前目录挂载到容器的 /app 目录,以便在开发过程中进行实时调试。web 服务还依赖于 db 服务,因此在启动时会先启动 db 服务。db 服务使用官方的 PostgreSQL 镜像,并设置了默认的用户名、密码和数据库名。

app.py

这个 app.py 文件定义了一个简单的 Flask 应用,其中使用了 SQLAlchemy 来访问 PostgreSQL 数据库。在数据库中定义了一个 User 表,并在首页中显示所有用户的姓名。

Node.js 应用

以下是一个使用 Docker Compose 运行 Node.js 应用的示例。

Dockerfile

这个 Dockerfile 使用 Node.js 12 的 Alpine 版本作为基础镜像,并安装应用所需的 Node.js 包。最后启动应用的入口是 package.json 文件中定义的 start 命令。

docker-compose.yml

这个 YAML 文件定义了两个服务:web 和 db。web 服务使用当前目录下的 Dockerfile 来构建镜像,并将容器的 3000 端口映射到主机的 3000 端口;另外还将当前目录挂载到容器的 /app 目录,以便在开发过程中进行实时调试。web 服务还依赖于 db 服务,因此在启动时会先启动 db 服务。db 服务使用官方的 PostgreSQL 镜像,并设置了默认的用户名、密码和数据库名。

app.js

这个 app.js 文件定义了一个简单的 Express 应用,其中使用了 pg 库来访问 PostgreSQL 数据库。在数据库中定义了一个 users 表,并在首页中显示所有用户的姓名。

总结

Docker Compose 是一个非常实用的工具,可以方便地管理多个容器的运行。在实际开发中,可以根据不同的需求来编写不同的 Docker Compose 文件,以提高开发效率和运维管理能力。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/656c764dd2f5e1655d4d542e


纠错
反馈