LoginSignup
4
1

DockerでGo言語の開発環境を作る方法

Last updated at Posted at 2023-07-08

はじめに

バックエンドにGoを使いたいと思ったときに作ったものです。
とりあえず動作する開発環境を作りたいという方におすすめです。
私自身、Dockerを用いたGoの開発環境の構築に苦労しましたので、同じく苦労している方の参考になれば幸いです。

フォルダ構成

フォルダ構成は以下のとおりです。
project
├backend
│ └Dockerfile
│ └cmd/
│  └─api/
│   └─main.go
└docker-compose.yml

具体的な手順

まず、Dockerfileを以下のとおり作成します。

FROM golang:1.19.1-alpine3.16

WORKDIR /app

# 最初は以下の部分はコメントアウトする
# COPY backend/go.mod .
# COPY backend/go.sum .

# RUN go mod download
# RUN apk add --no-cache gcc
# RUN apk add --no-cache musl-dev

# COPY ./backend .

# CMD ["go", "run", "./cmd/api"]

次に、docker-compose.ymlを以下のとおり作成します。

version: "3.3"

services:
  backend:
    build:
      context: .
      dockerfile: ./backend/Dockerfile
    ports:
      - 8080:8080
    volumes:
      - ./backend:/app

以上のファイルを作成したらprojectディレクトリで以下のコマンドを実行しイメージを作成します。

docker compose build

イメージが作成出来たら、以下のコマンドを実行しコンテナに入ります。

docker compose run --rm backend sh

コンテナに入ったら、以下のコマンドを実行します。
backendディレクトリ直下に「go.mod」が作成されます。

go mod init backend

続いて、何かモジュールをインストールします。ここでは、例えば、uuidをインストールします。すると、backendディレクトリ直下に「go.sum」が作成されます。

go get github.com/google/uuid

以上の作業を終えたらexitコマンドを実行しコンテナから抜けます。

exit

ここで、Dockerfileのコメントアウトを解除します。

FROM golang:1.19.1-alpine3.16

WORKDIR /app

# コメントアウトを解除
COPY backend/go.mod .
COPY backend/go.sum .

RUN go mod download
RUN apk add --no-cache gcc
RUN apk add --no-cache musl-dev

COPY ./backend .

CMD ["go", "run", "./cmd/api"]

解除したらprojectディレクトリで以下のコマンドを実行しイメージを再作成します。

docker compose build

ここで、main.goの中身を以下のとおり編集します。今回はサンプルなので簡単な内容にします。

package main
import (
	"fmt"
)
func main() {
	fmt.Println("Hello World!")
}

そして、以下のコマンドを実行し、ターミナルに「Hello World!」と表示されれば成功です。

docker compose up
・
・
・
Hello World!

まとめ

以上、とりあえず動作するDockerを用いたGoの開発環境の作り方を説明しました。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1