在本节中,我们将通过一个 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
你应该会看到类似如下的返回结果:
[]
这表示当前数据库中没有数据,需要先初始化数据库再进行后续操作。
