👨🎓
VScode+Docker+DevContainerでGOのローカル開発環境構築
はじめに
Goの学習のためにローカル開発環境を構築する必要があり、
その時の手順を忘備録のために残します。
実行環境
- Ubuntu 24.04.1 LTS
- Visual Studio Code version 1.99.3
- Docker version 27.5.1
- VSCode拡張機能 Remote Development
※厳密にはこの拡張機能のパック内にあるDev Containersを利用する
Dockerfileの作成
golang公式のイメージをベースにDockerfileを作成します。
イメージタグにはAlpine系やDebian系(bookworm/bullseye)、Windowsコンテナなどいろいろありますが、Debian系の最新であるBookwormを選択します。
ローカル開発環境なのでいろいろライブラリが入っていた方が便利
Dockerfile
FROM golang:1.24.2-bookworm
# 非rootユーザーを作成
RUN groupadd --gid 1000 vscode \
&& useradd --uid 1000 --gid 1000 -m vscode \
&& apt-get update \
&& apt-get install -y sudo \
&& echo vscode ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/vscode \
&& chmod 0440 /etc/sudoers.d/vscode
WORKDIR /usr/src/app
COPY go.mod ./
RUN go mod download
COPY . .
RUN chown vscode:vscode /usr/src/app
.devcontainerの作成
DevContainerを作成するための設定ファイル
.devcontainer/devcontainer.json
{
"name": "GO Development Container",
"build": {
"context": "..",
"dockerfile": "../Dockerfile"
},
// 非rootユーザー設定
"remoteUser": "vscode",
"updateRemoteUserUID": true,
// その他の設定...
"customizations": {
"vscode": {
"extensions": [
"golang.go"
]
}
}
}
GOのソースコード
Goのサンプルコード
pkg/hello/hello.go
package hello
func SayHello() string {
return "Hello, World!"
}
cmd/main.go
package main
import (
"fmt"
"hello_world_go/pkg/hello"
)
func main() {
message := hello.SayHello()
fmt.Println(message)
}
GOの設定ファイル
module hello_world_go
go 1.24.2
動作確認
$ go run cmd/main.go
Hello, World!
終わりに
vscodeのdev containerでgo言語の環境構築ができました。
この環境をベースにGoの勉強を進めたいと思います。
今回の記事のソースコード
hello_world
Discussion