互联网技术 / 互联网资讯 · 2024年3月17日

云计算核心技术:在本地使用 Python 镜像的 Compose 进行开发

在本节中,我们将通过一个 Compose 文件实现一次性启动应用的目标,并让 Python 应用在调试模式下运行,方便在开发阶段连接调试器。

请在 IDE 或文本编辑器中创建一个名为 docker-compose.dev.yml 的文件,并将下列内容粘贴进去。

version: '3.8'

services:
  web:
    build:
      context: .
    ports:
      - 5000:5000
    volumes:
      - ./:/app
  MySQLdb:
    image: MySQL
    ports:
      - 3306:3306
    environment:
      - MYSQL_ROOT_PASSWORD=p@SSw0Rd1
    volumes:
      - MySQL:/var/lib/mysql
      - MySQL_config:/etc/mysql
volumes:
  MySQL:
  MySQL_config:

使用这样的 Compose 文件可以避免逐条输入 docker run 时需要的众多参数。通过它的声明性配置,我们可以更高效地管理和运行多个服务。

该文件的一个显著优点是,我们将服务名称用作服务解析的基础,因此在应用连接字符串中可以直接使用服务名作为主机名,例如使用 MySQLdb 作为数据库主机名。这也是为什么在 Compose 中对服务命名时选择该名称的原因。

要启动应用并验证其运行情况,请在终端执行以下命令:

$ docker-compose -f docker-compose.dev.yml up –build

这里使用 --build 标志,确保 Docker 会在启动前构建镜像。

接下来测试 API 端点。在新终端中执行以下 curl 请求以查看不同端点的响应:

$ curl http://localhost:5000/initdb

$ curl http://localhost:5000/widgets

你应该会看到类似如下的返回结果:

[]

这表示当前数据库中没有数据,需要先初始化数据库再进行后续操作。