Go言語のWebフレームワーク Echo と PostgreSQL を使用した、Dockerベースの開発環境テンプレートです。 ローカルにGoやPostgreSQLをインストールすることなく、すぐに開発を始めることができます。
ホットリロードに対応しており、コードを変更すると自動でアプリケーションが再起動するため、快適な開発体験を提供します。
- Go + Echo: 高速でミニマルなWebフレームワーク
- PostgreSQL: 高機能なリレーショナルデータベース
- Docker Ready:
docker compose upだけで開発環境が起動 - ホットリロード: Air によるライブリローディングで開発効率UP
- クリーンな環境: 開発に必要なツールはすべてコンテナ内に集約
| カテゴリ | 技術 | バージョン |
|---|---|---|
| 言語 | Go | 1.23 |
| フレームワーク | Echo | v4 |
| データベース | PostgreSQL | 16 |
| コンテナ | Docker / Docker Compose | - |
| 開発ツール | Air (ホットリロード) | v1.61.7 |
- Docker
- Docker Compose (Docker Desktop には同梱されています)
-
このリポジトリをクローンする
git clone https://github.com/hmmf022/echo_test.git cd echo_test -
環境変数ファイルを作成する
.env.exampleファイルをコピーして.envファイルを作成します。このファイルにデータベースの接続情報などを記述します。cp .env.example .env
Note:
.envファイルは機密情報を含むため、.gitignoreに追加してバージョン管理の対象外にしています。 -
Dockerコンテナを起動する 以下のコマンドを実行して、コンテナをビルドし、起動します。
docker compose up --build
初回以降は
docker compose upだけで起動できますが、Dockerfileを変更した際は--buildオプションを付けてください。
コンテナが正常に起動したら、ブラウザやcurlで以下のURLにアクセスします。
- ルート:
http://localhost:1323- "Hello, Echo with PostgreSQL!" と表示されます。
- DB接続確認:
http://localhost:1323/health{"status":"ok"}と表示されれば、データベースとの接続も成功しています。
このプロジェクトで使用する環境変数のテンプレートです。必要に応じて値を変更してください。
# .env.example
# PostgreSQLの接続設定
DB_HOST=pg-16 # compose.ymlで定義したサービス名
DB_PORT=5432
POSTGRES_DB=mydb
POSTGRES_USER=webmaster
POSTGRES_PASSWORD=1234qweR
# アプリケーションのポート
APP_PORT=1323# バックグラウンドで起動
docker compose up -d
# 停止
docker compose down
# ログをリアルタイムで表示 (appサービスの場合)
docker compose logs -f app
# Goアプリケーションコンテナのシェルに入る
docker compose exec app shこのリポジトリは 開発環境 に特化しています。本番環境では以下の点を考慮する必要があります。
- Nginxの導入: 静的ファイルの配信やリバースプロキシとして、Goアプリケーションの前段にNginxを配置するのが一般的です。
- ホットリロードの無効化: 本番環境では
airは不要です。コンパイル済みの軽量なバイナリを直接実行します。 - マルチステージビルド:
Dockerfileを本番用に最適化し、ビルド環境と実行環境を分離することで、最終的なコンテナイメージのサイズを大幅に削減できます。