Dockerを利用してGo言語(Gin)の環境構築【初心者向け】

Docker

はじめに

Go言語はシンプルかつ効率的なプログラミング言語であり、特にサーバーサイド開発において非常に人気があります。本記事では、GoのWebフレームワークであるGinを使った環境をDockerで構築する方法を解説します。Ginを使うことで、Goのパフォーマンスを最大限に引き出しつつ、シンプルなWebアプリケーションの作成が可能です。

また、Dockerを使うことで、Goの環境構築が効率的になり、アプリケーションを簡単にデプロイできるようになります。今回は、Hello Worldを返す基本的なAPIを構築し、Dockerで動かす方法を紹介します。

ファイル構成

まずはプロジェクトのファイル構成を確認しましょう。

.
├── app
│ ├── go.mod
│ ├── go.sum
│ └── main.go
├── Dockerfile
├── docker-compose.yml
└── README.md
  • appフォルダ:Goのソースコードを格納。
  • Dockerfile:Dockerイメージをビルドするための設定ファイル。
  • docker-compose.yml:コンテナの構成を管理するファイル。
  • README.md:プロジェクトの説明や使い方などを記載するファイル(今回は省略)。

Dockerfileの作成

まずは、GoのアプリケーションをDocker上で動かすためのDockerfileを作成します。Dockerfileは、Goの公式Dockerイメージを基に、アプリケーションをビルド・実行します。

Dockerfile
# 1. Goのバージョンを指定
FROM golang:1.18

# 2. 必要なパッケージをインストール
RUN apt-get update && apt-get install -y git

# 3. 作業ディレクトリを設定
WORKDIR /go/src/app

# 4. ホストマシンからアプリケーションファイルをコンテナにコピー
COPY ./app .

# 5. Goアプリケーションを実行
CMD ["go", "run", "."]

解説

  1. FROM golang:1.18:Go言語の公式イメージを使っています。このバージョンは必要に応じて変更できます。
  2. RUN apt-get update:Gitなどの依存パッケージをインストールします。
  3. WORKDIR:作業ディレクトリを/go/src/appに設定します。アプリケーションコードはここに配置されます。
  4. COPY:ホストマシンのappフォルダの内容をコンテナ内にコピーします。
  5. CMD:コンテナが起動するときに実行するコマンドです。go runでアプリケーションを実行します。

docker-compose.ymlの作成

Docker Composeを使うことで、アプリケーションを簡単にビルド・起動できるようにします。docker-compose.ymlを作成し、複数のコンテナをまとめて管理できるようにしておくと便利です。

YAML
version: "3"
services:
  app:
    container_name: ir-backend  # コンテナの名前を指定
    build:
      context: .
      dockerfile: ./Dockerfile
    tty: true  # コンテナを終了させない
    volumes:
      - ./app:/go/src/app  # ホストのappフォルダをコンテナにマウント
    ports:
      - 8080:8080  # ローカルホストとコンテナのポートをバインド

解説

  • services:Docker Composeで管理するサービスの定義です。appはGoアプリケーションのサービスを定義しています。
  • volumes:ホストマシンのappフォルダをコンテナ内にマウントします。これにより、ファイルの変更がリアルタイムでコンテナに反映されます。
  • ports:ホストマシンのポート8080とコンテナ内のポート8080をバインドします。これでブラウザからlocalhost:8080にアクセスできるようになります。

Goモジュールの初期化とGinのインストール

Goモジュールの初期化

Goモジュールは、Goの依存関係を管理するための仕組みです。appディレクトリ内でモジュールを初期化します。

Bash
mkdir -p ./app
cd ./app
go mod init helloworld

これにより、go.modファイルが作成され、依存関係が管理できるようになります。

Ginのインストール

Ginは、Goで非常に人気のあるWebフレームワークです。Ginをインストールするためには、以下のコマンドを実行します。

Bash
go get -u github.com/gin-gonic/gin

これで、Ginの依存関係がプロジェクトに追加されます。

Goアプリケーションの作成

次に、Goのアプリケーションを作成します。今回は、Hello WorldをJSON形式で返す簡単なAPIを作成します。

main.go

以下のコードをmain.goに記述します。

Bash
package main

import (
	"github.com/gin-gonic/gin"
)

func main() {
	// Ginのルーターを作成
	router := gin.Default()

	// ルートエンドポイントを定義し、Hello Worldを返す
	router.GET("/", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "Hello World",
		})
	})

	// ポート8080でサーバーを起動
	router.Run(":8080")
}

解説

  • gin.Default():Ginのデフォルトのルーターを作成します。
  • router.GET(“/”)GETリクエストに対して、Hello WorldのメッセージをJSON形式で返します。
  • router.Run(“:8080”):サーバーをポート8080で起動します。

アプリケーションのビルドと実行

すべてのファイルが揃ったら、以下のコマンドでDockerコンテナをビルドし、アプリケーションを実行します。

Bash
docker compose up --build

コンテナがビルドされ、アプリケーションが起動します。ブラウザでhttp://localhost:8080にアクセスすると、以下のJSONデータが返されます。

JSON
{
  "message": "Hello World"
}

これで、Ginを使ったGoのWebアプリケーションをDocker環境で動かすことができました。

まとめ

今回の記事では、Dockerを使ってGo言語(Gin)の環境を構築し、簡単なAPIを作成する手順を解説しました。Dockerを使うことで、ローカル環境に依存せず、再現性のある開発環境を構築できます。また、将来的にはデータベースとの連携やテスト環境の整備も行えるようになります。

この記事のポイント

  • Dockerfiledocker-compose.ymlを使ったGo環境の構築。
  • Goモジュールの初期化と、Ginフレームワークのインストール方法。
  • Hello Worldを返すシンプルなAPIの実装。
  • Dockerコンテナを使ってアプリケーションを起動し、Webアクセスを確認。

コメント

タイトルとURLをコピーしました