介绍
我是 Meister Guild Co., Ltd. 新事业部的 Hitsuji。
在我们的新业务部门,我们的目标是推出新服务
每天,我们都在验证想法并创建原型!
技术进步是显着的,所以我正在努力赶上新技术,所以我不落伍!
在本文中,我想分享我通过使用 docker-compose 启动 FastAPI (Python)、MySQL 和 phpMyAdmin 容器获得了一个良好的开发环境。
本文介绍的代码是Github 在这里它发表在
请在您的爱好范围内使用它。我不能对任何事情负责。
你有什么样的环境?
$ docker compose build
$ docker compose up -d
当您执行该命令时,将启动多个容器,您将能够使用使用 FastAPI 和 phpMyAdmin 创建的 API 服务器。
FastAPI 的 API 模板
如果您在浏览器中询问http://localhost:8000/docs,您将看到以下 SwaggerUI 屏幕。
FastAPI 根据实现的 API 的内容自动创建 API 规范。
你只知道 API 规范,对吧?不要这么认为SwaggerUI 的优点是可以查看操作在
例如,如果要执行这个GET 方法的路径为/api/users 的API,只需点击这个“执行”按钮。
启动另一个应用程序(例如 Postman),输入路径,您无需执行该过程!太方便了。
phpMyAdmin
如果您在浏览器中询问http://localhost:8080,您将看到以下 phpMyAdmin 屏幕。
只需启动一个 Docker 容器,您就可以轻松连接到 DB 客户端! !简单的
这样就无需准备 DB 客户端并根据连接信息连接到 DB。
在 API 的开发过程中,您可能想检查各种数据的操作,这将是可能的,因为您可以轻松地使用 GUI 操作数据。
docker-compose.yml 的内容
如上所述,我们准备了一个非常容易开发的环境,但我想你会对其中的内容感到好奇。
下面是 docker-compose.yml 的内容。
version: "3"
services:
python-api:
container_name: python_host
build: ./docker/python
volumes:
- .:/src
ports:
- "8000:8000" # ホストマシンのポート8000を、docker内のポート8000に接続する
environment:
PMA_HOST: db
networks:
- mysql_bridge
mysql:
container_name: mysql_host
build: ./docker/mysql
command: --character-set-server=utf8 --collation-server=utf8_unicode_ci
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: testdb
MYSQL_ROOT_PASSWORD: password
MYSQL_USER: user_name
MYSQL_PASSWORD: password
volumes:
- ./docker/mysql/initdb.d:/docker-entrypoint-initdb.d # 定義どおりにテーブル作成
- ./docker/mysql/conf.d:/etc/mysql/conf.d # MySQLの基本設定(文字化け対策)
# - ./docker/mysql/mysql_data:/var/lib/mysql
restart: always
platform: linux/amd64
networks:
- mysql_bridge
phpmyadmin:
container_name: phpmyadmin_host
depends_on:
- mysql
image: phpmyadmin/phpmyadmin
restart: always
ports:
- "8080:80" #localhost:8080 で phpMyAdmin にアクセスできます
environment:
PMA_ARBITRARY: 1
PMA_HOST: mysql_host
PMA_USER: user_name
PMA_PASSWORD: password
networks:
- mysql_bridge
# コンテナ間で通信を行うためのネットワークブリッジ
networks:
mysql_bridge:
driver: bridge
数据库使用 MySQL。
作为启动 MySQL 容器时的一个小技巧,initdb.d 文件夹中的 sql 会自动执行。
例如,users.sql 包含以下创建表和插入语句。
这将在每次容器启动时初始化数据库。
我们不敢持久化数据。我喜欢。
在联合开发的过程中,我不希望很难检查其他人是否篡改了数据,所以我希望通过查看initdb.d文件夹中的sql文件能够看到数据。因为.
--
-- テーブルの作成
--
CREATE TABLE IF NOT EXISTS `users` (
`user_id` binary(16) NOT NULL,
`user_name` varchar(20) NOT NULL DEFAULT '',
`mail_address` varchar(50) NOT NULL DEFAULT '',
`password` varchar(20) NOT NULL DEFAULT '',
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- テストデータのインサート
--
INSERT INTO `users` (`user_id`, `user_name`, `mail_address`, `password`) VALUES
(ULID_DECODE('01G921E9GQVWZN4MRWYJSS21P3'), '毎日 寝太郎', 'test_user1@test.com', 'password1'),
(ULID_DECODE('01GB6SC5PDBEC0PFDFHJ913QZ5'), '車田 テスラ', 'test_user2@test.com', 'password2'),
(ULID_DECODE('01GB6SC9BH6RF5NCXA0887Q5C9'), '金 肉尾', 'test_user3@test.com', 'password3');
最后
可以得到很好的开发体验,快来试试吧!
本来想写FastAPI的架构的,但是由于篇幅和时间不够,这里就省略了。
我在 README 中写了一点,如果您有兴趣,请阅读。
如上所述,当我使用 docker-compose 为 FastAPI、MySQL 和 phpMyAdmin 创建环境时,开发太容易了。
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308631857.html