Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/YukiOnishi1129/go-docker-restapi-sample
golang docker REST APIのサンプル
https://github.com/YukiOnishi1129/go-docker-restapi-sample
Last synced: 7 days ago
JSON representation
golang docker REST APIのサンプル
- Host: GitHub
- URL: https://github.com/YukiOnishi1129/go-docker-restapi-sample
- Owner: YukiOnishi1129
- Created: 2021-11-05T13:19:49.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2023-11-17T14:47:51.000Z (12 months ago)
- Last Synced: 2024-08-02T17:36:26.267Z (3 months ago)
- Language: Go
- Size: 17.3 MB
- Stars: 38
- Watchers: 1
- Forks: 11
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# go-docker-restapi-sample
golang docker REST API のサンプル
## 技術構成
- go
- gorm
- gorilla
- crypto
- godotenv
- mysql
- jwt## API
### トップ
| | メソッド | URI | 権限 |
| :--------------------------------------- | :------- | :------ | :--- |
| 文字列を返すだけの確認用のエンドポイント | GET | /api/v1 | なし |### ユーザー認証
| | メソッド | URI | 権限 |
| :--------------------------------------- | :------- | :------ | :--- |
| ログイン | POST | /api/v1/signin | なし |
| 会員登録 | POST | /api/v1/signup | なし |### Todo
| | メソッド | URI | 権限 |
| :--------------------------------------- | :------- | :------ | :--- |
| ユーザーに紐づく全Todoデータを取得 | GET | /api/v1/todo | 認証済 |
| TodoのIDに紐づく単一のTodoデータを取得 | GET | /api/v1/todo/:id | 認証済 |
| Todo新規作成 | POST | /api/v1/todo | 認証済 |
| Todo更新 | PUT | /api/v1/todo/:id | 認証済 |
| Todo削除 | DELETE | /api/v1/todo/:id | 認証済 |## 環境構築
### 1. env ファイルを作成
- ルートディレクトリ直下に「.env」ファイルを作成
- 「.env.sample」の記述をコピー```
touch .env
```- app ディレクトリに移動し、「.env」ファイルを作成
- 「app/.env.sample」ファイルの記述をコピー```
cd app
touch .env
```### 2. docker 起動
- ビルド
```
docker compose build
```- コンテナ起動
```
docker compose up
```- go のコンテナにアクセス
```
make backend-ssh
```### 3. データ用意
- マイグレーションを実行
- go のコンテナ内で、以下コマンドを実行する```
make db-migrate
```- テーブルが作成されるので、DB(MySQL)に接続し確認する
- 接続アプリは「Sequel Ace」がおすすめ
- https://qiita.com/ucan-lab/items/b1304eee2157dbef7774- シーディングを実行
- go のコンテナ内で、以下コマンドを実行する```
make db-seed
```- データが作成されるので、DB(MySQL)に接続し確認する
### 4. API 起動
- DBにデータを作成したので、再度dockerをリスタートしてAPIを起動させる (初回のみ)
```
docker compose restart
```- 以下の url に接続し、レスポンスが返ってくる事を確認
- http://localhost:4000/api/v1## 開発中のコマンド
※何もdockerでAPIを起動した状態で実行してください。### テスト
```
make test
```### 静的解析
```
make lint
```### goのライブラリ追加
```
go-add-library name="[ライブラリ名]"// 複数のライブラリを指定する場合は、name="xxx yyy" のように""で囲んで実行すること
```### DBのデータをリセットする場合
gormはロールバック機能がないため、以下のコマンドでDBごと消去する
```
docker compose down -v
```その後dockerを起動させて再度マイグレーションをしてテーブルを初期化する
## docker コマンド
```
// ビルド
docker-compose build// コンテナ起動
docker-compose up// コンテナ起動(バックグラウンド実行)
docker-compose up -d// コンテナ停止
docker-compose down// コンテナ停止&ボリューム削除(DBデータを削除)
docker-compose down -v// appコンテナへログイン
docker exec -it 20211105_go_rest_server sh// dbコンテナへログイン
docker exec -it 20211105_go_rest_db /bin/bash```