Go言語

Go開発環境構築: Docker活用のメリットと手順

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

なぜDockerでGo開発環境を構築するのか?

一貫性のある環境簡易なセットアップが最大の利点です。従来のローカル環境では、OSごとのライブラリ依存やバージョン違いからトラブルが生じることがありますが、Dockerは「コンテナ内に必要なものを全て入れる」仕組みで、開発者同士で同じ環境を共有できます。また、VS CodeのRemote - Containers拡張を使うことで、エディタ内でコンテナ内のファイルを編集できるため、学習コストを抑えることが可能です。


対象読者層と本記事の目的

本記事は、Go言語初心者やDocker未経験者が対象です。ゼロからDockerを使ってGo開発環境を構築する手順を、VS Codeとの連携を含めながら丁寧に解説します。読者は以下のスキルを得られることを目指しています:

  • Docker Engineのインストール方法
  • Go用コンテナイメージの選択基準
  • VS CodeからDockerデーモンと連携する方法

開発環境準備: DockerとVS Codeのインストール

Go開発を始める前に、Docker EngineとVS Codeを導入する必要があります。それぞれの設定手順はOSに応じて異なりますが、公式ドキュメントを参照しながら進めます。


Docker Engineの導入手順

Docker Engineのインストールは、以下のように各OSで行います(例):

OS インストール方法 公式リンク
Windows Docker Desktop for Windowsをダウンロード https://docs.docker.com/docker-for-windows/install/
macOS Docker Desktop for Macをインストール https://docs.docker.com/docker-for-mac/install/
Linux(Ubuntu) sudo apt install docker.io コマンドで導入 https://docs.docker.com/engine/install/ubuntu/

インストール後は、docker --versionコマンドでバージョンを確認してください。2023年現在ではDocker Engine 24.x系が推奨です。


VS CodeでのDocker拡張機能設定

VS Codeでは、「Remote - Containers」拡張機能を使うことで、コンテナ内で開発できます。以下が導入手順です:

  1. VS Codeの拡張市場から「Remote - Containers」をインストール
  2. .devcontainerフォルダを作成し、Dockerfileとdevcontainer.jsonファイルを配置(後述します)
  3. VS Codeでプロジェクトを開き、「Remote Explorer」ビューからコンテナに接続

注意: Dockerデーモンの起動状態を常に確認してください。Docker Desktopではアイコンが青色になれば正常です。


Go開発用Dockerイメージの選び方と検証

Go言語開発には、公式提供のgolangイメージコミュニティ製のalpineベースイメージなど選択肢があります。それぞれの特徴を比較して選ぶことが重要です。


公式イメージvsコミュニティ製イメージ

比較項目 golang(公式) go:alpine(コミュニティ)
バージョン管理 GO_VERSION環境変数で対応 同様にGO_VERSIONを使用可能
サイズ 約700MB(golang:latest) 約150MB(go:alpine)
依存関係 バッファローなど開発ツールも含む 最小限のライブラリのみ

推奨: 開発環境はgolang、本番用や軽量化が必要な場合はgo:alpineを選びましょう。


バージョン管理の実践例

Goバージョンを指定するには、Dockerfileで以下のように記述します:

このようにすることで、バージョンを変更するたびにDockerイメージを再ビルドできます。

注意: Go 1.21は2023年時点で安定版ではないため、公式ドキュメントで確認の上使用してください。


Dockerfile作成時のベストプラクティス

Dockerfileは、「コード開発環境」と「ビルド環境」の役割を分離し、効率よく作成しましょう。特にマルチステージビルドやVS Codeとの連携設定が重要です。


マルチステージビルドの活用

以下のような構造にすることで、コンテナイメージのサイズを抑えつつ、開発環境とビルド環境を分離できます:

理由: 第一ステージでは開発ツールも含め、第二ステージでは最小限の環境で実行します。


開発者向け設定の最適化

VS Codeからコンテナ内で編集できるようにするには以下の2点を設定します:

  1. ワークスペースマウント
    devcontainer.jsonに以下のように指定することで、ホストPCのプロジェクトフォルダをコンテナ内へマウントできます。

json
{
"mounts": [
"type=bind,source=${localWorkspaceFolder},target=/workspace"
]
}

  1. Dockerデーモン起動
    VS Codeの「Remote - Containers」拡張を起動した時点で、Dockerデーモンも自動で接続されます。

VS CodeでのDocker連携による開発効率化

VS CodeとDockerの連携により、リアルタイムデバッグやリモートエディタが可能になります。特にRemote - Containers拡張は、開発体験を飛躍的に向上させます。


コンテナ内でのリアルタイムデバッグ

  1. devcontainer.jsonでGoのデバッガ設定を有効化します:

json
{
"settings": {
"go.useLanguageServer": true,
"go.debugAdaptors": ["delve"]
}
}

  1. VS Codeで「Run and Debug」ビューを開き、launch.jsonに以下を記述:

json
{
"name": "Launch",
"type": "go",
"request": "launch",
"mode": "debug",
"program": "${workspaceFolder}/main.go"
}

  1. F5キーでデバッグ開始。コンテナ内での実行結果を確認できます。

リモートエディタの設定方法

VS CodeのRemote - Containers拡張を使用すると、以下のように簡単にリモートエディタが利用可能です:

  1. devcontainer.jsonに以下を追加することで、エディタ起動時に自動でコンテナへ接続します:

json
{
"remoteEnv": {
"GOPATH": "/workspace"
}
}

  1. VS Codeでプロジェクトを開き、「Remote Explorer」から「Reopen in Container」を選択。
  2. コンテナ内にVS Codeが起動し、コード編集が可能です。

注意: ソースコードの変更は自動的にホストPCと同期されるため、ローカルで修正した内容はコンテナ内でも即反映されます。

重要事項: Go 1.20以降ではGOPATH設定が非推奨になりました。代わりにGo Modulesを使用するようにしてください。


まとめ

本記事では、Go言語初心者向けにDockerコンテナを使用した開発環境構築手順を解説しました。重要なポイントを以下に整理します:

  • Dockerの活用メリット: 環境一貫性とVS Codeとの連携による効率向上
  • イメージ選択: golang(開発)とgo:alpine(本番)を使い分け、バージョン管理を実施
  • Dockerfileの最適化: マルチステージビルドでサイズ削減・開発環境分離
  • VS Codeとの連携: Remote - Containers拡張でリアルタイムデバッグとリモートエディタが可能

記事を参考に、DockerでGo開発環境構築を試してみましょう

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Go言語