はじめに
Docker上でGoを動かしたい方を対象に、その方法を書きます。
Dockerとは
Dockerは、コンテナ仮想化技術を提供するオープンソースのプラットフォームです。Dockerを使用すると、アプリケーションやサービスを実行するために必要なすべてのソフトウェア、ライブラリ、およびその他の依存関係を含めて、独立した環境を作成することができます。
Dockerは、軽量でポータブルなコンテナを提供し、異なる環境やプラットフォーム間でアプリケーションを移動できるようにします。開発者は、開発中のアプリケーションをコンテナ内でテストし、そのコンテナをサーバーにデプロイすることができます。
また、Dockerは、アプリケーションを実行するために必要なリソースを最小限に抑えることができます。これにより、コストを削減し、アプリケーションのパフォーマンスを向上させることができます。
Dockerは、オープンソースであり、コミュニティによって開発、維持されています。Docker Hubと呼ばれる公式のレジストリを使用することで、開発者は、既存のDockerイメージを使用したり、自分自身のイメージを作成したりすることができます。
Dockerインストール
DockerはこちらのDocker Desktopをダウンロードし、インストールしてください。

DockerでGoを動かす手順
次の手順でDocker上でGoを動かせます。
- Goプログラム作成
- Dockerfileの作成
- Dockerイメージをビルド
- Dockerコンテナを実行する
Goプログラム作成
簡単な「Hello, World!」を表示するプログラムのサンプルを用意しました。
前提として「go mod init」でプロジェクトを作る必要があります。
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
Dockerfile作成
作成したGoプログラムを動かすためのDockerfileを用意します。
# Dockerイメージのベースとなるイメージを指定
FROM golang:latest
# コンテナ内で作業するディレクトリを指定
WORKDIR /app
# ホストOSのカレントディレクトリにあるすべてのファイルをコンテナ内の/appディレクトリにコピー
COPY . .
# Goの依存パッケージをダウンロード
RUN go mod download
# コンテナの起動時に実行するコマンドを指定
CMD ["go", "run", "main.go"]
Dockerfileは、Dockerイメージを構築するためのテキストファイルです。Dockerfileには、Dockerイメージを構築するために必要なコマンドが記述されています。
Dockerイメージをビルドする
次のコマンドでイメージをビルドします。
docker build -t my-go-app .
- Dockerコンテナを実行する
Dockerコンテナを実行する
次のコマンドでDockerコンテナ内でGoプログラムが実行され、”Hello, World!”というメッセージが表示されます。
docker run my-go-app