DockerでGOの環境を構築してみる(Windows)

Qiitaの下記の記事を参考にDockerでGOの環境を作成してみました。
https://qiita.com/free-honda/items/27031bdf1b20e1cfae1f
当記事は環境構築の備忘となります。

開発環境

  • OS:Windows11
  • Docker Desktopインストール済み
  • VSCodeインストール済み

Dockerファイルを作成する

下記のコマンドを実行し、Dockerファイルを作成します。
エラーメッセージが表示されますが、Dockerファイルが作成されていれば問題ありません。

type nul > Dockerfile

下記の内容でDockerファイルを編集します。

# Goの公式イメージを使用
FROM golang:1.20

# 作業ディレクトリを設定
WORKDIR /app

# Goアプリケーションのソースコードをコピー
COPY . .

# Goモジュールを初期化し、依存関係を解決
RUN go mod init my-go-app && go mod tidy

# アプリケーションをビルド
RUN go build -o main .

# コンテナが起動時に実行するコマンド
CMD ["./main"]

# ポート8080を開放
EXPOSE 8080

アプリケーションの定義ファイル(YAML)を作成する

下記のコマンドを実行し、YAMLファイルを作成します。

type nul > docker-compose.yml

エラーメッセージが表示されますが、YAMLファイルが作成されていれば問題ありません。
下記の内容でYAMLファイルを編集します。

services:
  app:
    build:
      context: .
    ports:
      - "8080:8080"
    container_name: go_app

GOのサンプルプログラムを作成します

下記のコマンドを実行し、サンプル用のプログラムを作成します。

type nul > main.go

動作確認用にHello Worldと出力される処理を実装します。

package main

import (
	"fmt"
	"net/http"
)

// リクエストを処理するハンドラ関数
func handler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintln(w, "Hello, World!")
}

func main() {
	// ハンドラ関数をルートパスに登録
	http.HandleFunc("/", handler)

	// サーバーをポート8080で起動
	fmt.Println("Server is running on port 8080...")
	http.ListenAndServe(":8080", nil)
}

コンテナを起動する

下記のコマンドを実行し、コンテナを起動します。

docker compose up -d --build

Docker画面でGOコンテナが起動していればOKです。

環境が構築できたか確認する

下記のURLを開きます。
http://localhost:8080/
問題なくHello, World!が表示されれば完了です。

以上になります。
お読み頂き、ありがとうございました。