Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/seo-4d696b75/station-service

日本全国の駅・路線データを取得できるREST API
https://github.com/seo-4d696b75/station-service

docker fastapi python rest-api

Last synced: 27 days ago
JSON representation

日本全国の駅・路線データを取得できるREST API

Awesome Lists containing this project

README

        

# Station-Service

日本中の駅・路線データを簡単に取得できるREST APIです

- URL:https://api.station.seo4d696b75.com/
- [各エンドポイントの詳細はSwagger UIを参照してください](https://api.station.seo4d696b75.com/docs)

### データのソース
APIが扱うデータは[GitHub station_database](https://github.com/Seo-4d696b75/station_database)で管理されています.

### データの更新
Google Cloud Run のサービスは外部から再起動できない?ので、
同じContainerイメージのまま新しいリビジョンで再デプロイする

### 使用技術

Heroku から Google Cloud Run にデプロイ先を変更しました

# 開発

## Dockerコンテナ環境(デプロイあり)
Google Cloud Runにデプロイするのに必要です

### gcloud CLIのセットアップ

リージョン指定は適宜読み替えて下さい

1. [インストール](https://cloud.google.com/sdk/docs/install?hl=ja)
2. Google Cloudを利用するアカウントでログイン
```bash
gcloud auth login
```

3. プロジェクトの指定
```bash
gcloud config set project ${PROJECT_ID}
gcloud config set run/region asia-northeast1
```

4. Dockerに認証情報をセット

```bash
gcloud auth configure-docker asia-northeast1-docker.pkg.dev
```

### イメージのbuild

1. Docker Desktopなどで使用する場合

```bash
docker build -t ${local_name}:${local_tag} .
```

2. GCRにデプロイする場合

```bash
docker build -t ${local_name}:${local_tag} . --platform linux/amd64
```

### イメージのPush
[Google Artifact Registryを利用します](https://cloud.google.com/artifact-registry/docs/docker/pushing-and-pulling?hl=ja)

`tag=asia-northeast1-docker.pkg.dev/${project_id}/${repo}/${remote_name}:${remote_tag}`

```bash
docker tag ${local_name}:${local_tag} $tag
docker push $tag
```

### Google Cloud Runへのデプロイ
[Google Cloud Consoleから操作できます](https://cloud.google.com/run/docs/deploying?hl=ja#revision)

## Conda環境(デプロイなし)

ローカルで手軽に実行・開発するのに便利です

**注意** HerokuからGoogle Cloud Runへの移行に伴いデプロイにはDockerイメージのビルドが必要です

### 環境のセットアップ
```bash
conda create --name station-service python=3.12
conda activate station-service
pip install -r requirements.txt
```

### ローカル実行
```bash
uvicorn main:app --host 0.0.0.0 --port 3003 --reload
```

### VSCodeのデバッグ設定
```json
{
"python.condaPath": "/Users/${you}/opt/anaconda3/condabin/conda",
"python.defaultInterpreterPath": "/Users/${you}/opt/anaconda3/envs/station-service/bin/python"
}
```