【Docker】python(Flask)+GraphQL(graphene)+MySQL(sqlalchemy)の環境を構築する


はじめに

pythonのwebフレームワークのFlaskを用いてGraphQL環境をdockerを用いて構築する。

ここでは、docker,docker-composeについて説明する。grapheneの設定はPython (Flask) with GraphQL Server implementing SQLAlchemy, graphene, and SQLite を参照

必要ファイル、ディレクトリ

.
├── docker-compose.yml
├── Dockerfile
├── requirements.txt
├── books/ ← 上記のサイトを参照

ファイルの内容

requirements.txt

requirements.txt
Flask==1.1.2
Flask-GraphQL==2.0.1
graphene==2.1.8
graphene-sqlalchemy==2.3.0.dev1
SQLAlchemy==1.3.17
pymysql

Dockerfile

Dockerfile
FROM python:3.7-slim

WORKDIR /mnt

COPY requirements.txt ./

RUN pip install --no-cache-dir -r requirements.txt


docekr-compose.yml

docker-compose.yml
version: '2'
services:
  graphql: 
    build: .
    volumes: 
    - './:/mnt'
    ports:
        - "5000:5000"
    tty: true
  db:
    image: mysql:5.7
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_DATABASE: test
      MYSQL_ROOT_PASSWORD: test
      MYSQL_USER: test
      MYSQL_PASSWORD: test
    ports:
        - "3306:3306"

他のファイルはPython (Flask) with GraphQL Server implementing SQLAlchemy, graphene, and SQLiteを参照

実行

以下のコマンドを実行する

$ docker-compose up -d

http://localhost:5000/graphql にアクセス

以下の画面が表示されれば成功!