docker-composeでFastAPIとMySQLとphpMyAdminの環境作ったら開発しやすすぎた

介绍

我是 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 的优点是可以查看操作
docker-composeでFastAPIとMySQLとphpMyAdminの環境作ったら開発しやすすぎた

例如,如果要执行这个GET 方法的路径为/api/users 的API,只需点击这个“执行”按钮。
启动另一个应用程序(例如 Postman),输入路径,您无需执行该过程!太方便了。
docker-composeでFastAPIとMySQLとphpMyAdminの環境作ったら開発しやすすぎた

phpMyAdmin

如果您在浏览器中询问http://localhost:8080,您将看到以下 phpMyAdmin 屏幕。
只需启动一个 Docker 容器,您就可以轻松连接到 DB 客户端! !简单的
这样就无需准备 DB 客户端并根据连接信息连接到 DB。

在 API 的开发过程中,您可能想检查各种数据的操作,这将是可能的,因为您可以轻松地使用 GUI 操作数据。
docker-composeでFastAPIとMySQLとphpMyAdminの環境作ったら開発しやすすぎた

docker-compose.yml 的内容

如上所述,我们准备了一个非常容易开发的环境,但我想你会对其中的内容感到好奇。
下面是 docker-compose.yml 的内容。

码头工人-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 会自动执行。
docker-composeでFastAPIとMySQLとphpMyAdminの環境作ったら開発しやすすぎた

例如,users.sql 包含以下创建表和插入语句。
这将在每次容器启动时初始化数据库。
我们不敢持久化数据。我喜欢。
在联合开发的过程中,我不希望很难检查其他人是否篡改了数据,所以我希望通过查看initdb.d文件夹中的sql文件能够看到数据。因为.

用户.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

相关文章:

  • 2022-12-23
  • 2021-07-03
  • 2022-12-23
  • 2021-05-19
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-21
  • 2021-12-28
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案