db_app

a DB App with docker

https://github.com/nbtkmy/db_app

Science Score: 54.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (2.5%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

a DB App with docker

Basic Info
  • Host: GitHub
  • Owner: NbtKmy
  • License: mit
  • Language: Python
  • Default Branch: main
  • Size: 139 KB
Statistics
  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 1
Created about 3 years ago · Last pushed over 2 years ago
Metadata Files
Readme License Citation

README.md

DOI

日本学関連データベースリストのデータベースつくった

DockerとDocker-composeさえあれば動くデータベースです。 MySQLとFlaskで作っていて、APIでデータをJSON形式でゲットげきます。 APIはゲットのみ用意しました。 データベースに更新がある場合はCronでグーグルスプレッドシートのデータをとりにゆきます。

データベースのインストールなど

まずgitなどでこのリポジトリをクローンしてください。 その後クローンしてきた最上位のフォルダに.envファイルを作って必要な環境変数を作成してください。

MYSQL_DATABASE=[データベースのなまえ] MYSQL_USER=[MySQLを操作するユーザー名] MYSQL_PASSWORD=[ユーザーのパスワード] MYSQL_ROOT_PASSWORD=[ルートユーザーのパスワード]

ファイルを作成したら、docker-compose.ymlが入っているディレクトリにはいって、 docker-composeコマンドでイメージ・コンテナ作成、コンテナ起動を行ってください。 こんな感じ $ cd ./db_app $ docker-compose build $ docker-compose up -d

ここには2つのコンテナが入っていて、一つがMySQL, 一つがFlaskのAPIを動かしています。 FlaskのはいったコンテナはMySQLのコンテナのヘルスチェックがすんでから起動するので、 少し時間がかかります。(30秒くらい) また、データベースが入っているコンテナのなかでcronをつかってデータべースを更新するので以下のコマンドでDockerに入り、 さらにcronを起動してください。

``` $ docker-compose exec mysql bash

以下コンテナ内から実行

$ sh /scripts/for_cron.sh $ service cron start ```

cronジョブはデフォルトで毎週月曜の4時59分に動くようにしてあります。 そしてそれにあわせてbackendのコンテナを再起動させてあげてください。

```

ホストのCronで

10 05 * * 0 docker-compose restart backend ```

無事起動したら、以下のURLでアクセスできるはず。 localhost:5050

APIについては以下を参照してください。

APIについて

APIは以下の4つのクエリが可能です。 1. localhost:5050/creator/all

データベースを作成したすべての団体名を表示。

  1. localhost:5050/creator/search

データベースを作成した団体を検索。

パラメータは以下のとうりです。

  • id = 団体データのid
  • name_ja = 団体の日本語名
  • name_en = 団体の英語名
  • altnames = その他の団体名

クエリの作り方・例 localhost:5050/creator/search?name_ja=国立&altnames=NDL

結果は20件ごとにページで区切って表示されます。 ページ指定、最高件数変更などは以下のパラメータでできます。

  • page = ページ指定
  • per_page = ページあたりの最高件数
  1. localhost:5050/databaselist/all

登録されたすべてのデータベース表示。

  1. localhost:5050/databaselist/search

データべースの検索。 パラメータは以下のとうり。

  • id = データベースのid
  • title_ja = データベースの日本語タイトル
  • title_en = データベースの英語タイトル
  • creator_id = データベースを作成した団体のid
  • ddc_category = データベースのDDCカテゴリ(3桁のアラビア数字を文字列として、たとえば"900"など)
  • type = メディアタイプ
  • description_ja = データベースの日本語の説明
  • description_en = データベースの英語の説明

結果は20件ごとにページで区切って表示されます。 ページ指定、最高件数変更などは以下のパラメータでできます。 - page = ページ指定 - per_page = ページあたりの最高件数

Owner

  • Name: Nobutake Kamiya
  • Login: NbtKmy
  • Kind: user
  • Location: Zürich

Citation (CITATION.cff)

cff-version: 1.2.0
authors:
  - family-names: Kamiya
    given-names: Nobutake
    orcid: https://orcid.org/0000-0002-5755-3322
title: "DB-App (Database Application)"
version: 1.0.0
doi: 10.5281/zenodo.8381877
date-released: 2023-09-26

GitHub Events

Total
Last Year

Dependencies

backend/Dockerfile docker
  • python 3.7 build
docker-compose.yml docker
  • mysql 8-debian
mysql/Dockerfile docker
  • mysql 8-debian build
backend/requirements.txt pypi
  • PyMySQL *
  • flask *
  • flask-cors *
  • flask-restful *
  • flask-sqlalchemy *
  • flask_marshmallow *
  • gunicorn *
  • marshmallow-sqlalchemy *
  • sqlalchemy *
  • sqlalchemy_utils *