このマニュアルでは、Go GinフレームワークとDockerを使用したREST API開発環境の構築手順を詳しく説明します。
- Docker (バージョン 20.10 以上)
- Docker Compose (バージョン 2.0 以上)
- Git
- Docker Desktop for Windows をダウンロード
- インストーラーを実行してインストール
- システムを再起動
- Docker Desktop for Mac をダウンロード
- .dmgファイルをマウントしてApplicationsフォルダにドラッグ
- Docker Desktopを起動
# Dockerの公式GPGキーを追加
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Dockerリポジトリを追加
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# パッケージリストを更新してDockerをインストール
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 現在のユーザーをdockerグループに追加
sudo usermod -aG docker $USER# リポジトリをクローン
git clone https://github.com/fugafuga-2025/TEST.git
# プロジェクトディレクトリに移動
cd TEST# ファイル構成を確認
ls -la
# 以下のファイルが存在することを確認
# - main.go (メインアプリケーション)
# - go.mod (Go モジュール定義)
# - Dockerfile (Docker イメージ定義)
# - docker-compose.yml (Docker Compose 設定)# Dockerイメージをビルド
docker build -t gin-docker-sample .
# ビルドが成功したことを確認
docker images | grep gin-docker-sample# バックグラウンドでアプリケーションを起動
docker-compose up -d
# ログを確認
docker-compose logs -f
# アプリケーションの状態を確認
docker-compose ps# コンテナを起動
docker run -d -p 8080:8080 --name gin-sample gin-docker-sample
# ログを確認
docker logs gin-sample
# コンテナの状態を確認
docker pscurl http://localhost:8080/health期待される応答:
{
"status": "ok",
"message": "サーバーは正常に動作しています"
}curl http://localhost:8080/users期待される応答:
{
"status": "success",
"data": [
{"id": 1, "name": "田中太郎", "age": 25},
{"id": 2, "name": "佐藤花子", "age": 30},
{"id": 3, "name": "鈴木一郎", "age": 28}
],
"count": 3
}curl http://localhost:8080/users/1期待される応答:
{
"status": "success",
"data": {"id": 1, "name": "田中太郎", "age": 25}
}curl http://localhost:8080/api/info# 依存関係をダウンロード
go mod download
# アプリケーションを直接実行
go run main.go
# ブラウザで http://localhost:8080 にアクセスGoがローカルにインストールされていない場合、Dockerを使用してサンプルプログラムを実行できます:
# プロジェクトルートディレクトリから実行
# 四則演算サンプル
docker run --rm -v $(pwd):/app -w /app golang:1.21-alpine go run examples/arithmetic-operations/main.go add 10 5
# 出力練習サンプル
docker run --rm -v $(pwd):/app -w /app golang:1.21-alpine go run examples/output-practice/main.go basic
# CLIツールサンプル
docker run --rm -v $(pwd):/app -w /app golang:1.21-alpine go run examples/simple-cli/main.go hello テスト
# JSON処理サンプル
docker run --rm -v $(pwd):/app -w /app golang:1.21-alpine go run examples/json-parser/main.go
# ミドルウェアデモ(ポート8080でサーバーを起動)
docker run --rm -v $(pwd):/app -w /app -p 8080:8080 golang:1.21-alpine go run examples/middleware-demo/main.gomain.goを編集- Dockerイメージを再ビルド
docker-compose down
docker-compose up --build# リアルタイムでログを表示
docker-compose logs -f gin-app
# 特定の行数のログを表示
docker-compose logs --tail=50 gin-appエラー: bind: address already in use
解決方法:
# 使用中のプロセスを確認
lsof -i :8080
# プロセスを終了
kill -9 <PID>
# または別のポートを使用
docker run -p 8081:8080 gin-docker-sampleエラー: failed to solve: failed to compute cache key
解決方法:
# Dockerキャッシュをクリア
docker system prune -a
# 再度ビルド
docker build --no-cache -t gin-docker-sample .確認手順:
# コンテナのログを確認
docker logs <container_id>
# コンテナ内でシェルを実行
docker exec -it <container_id> /bin/sh# 実行中のコンテナ一覧
docker ps
# 全てのコンテナ一覧(停止中も含む)
docker ps -a
# イメージ一覧
docker images
# ネットワーク一覧
docker network ls
# ボリューム一覧
docker volume ls# Docker Composeで起動した場合
docker-compose down
# コンテナとボリュームも削除
docker-compose down -v
# イメージも削除
docker-compose down --rmi all# 停止中のコンテナを削除
docker container prune
# 未使用のイメージを削除
docker image prune
# 未使用のボリュームを削除
docker volume prune
# 未使用のネットワークを削除
docker network prune
# 全ての未使用リソースを削除
docker system prune -a- 開発中は
docker-compose upでフォアグラウンド実行すると、ログがリアルタイムで確認できます - コードを変更した後は
docker-compose up --buildで再ビルドが必要です - 本番環境では環境変数を使用してセキュリティを強化してください
- Ginのドキュメント: https://gin-gonic.com/docs/