Docker Compose を用いて Docker 上で Go 言語を動かす

株式会社プライムストラクチャーのエンジニアのSayaです。
今回は Docker 上で Go 言語が動く環境を、 Docker Compose を用いて作成してみたいと思います。

Docker とは

様々なコンテナ型の仮想環境を自分のマシン上に簡単に立てることが出来るアプリケーションです。
Linux のコンテナ技術を用いており、仮想マシンに比べて軽量なのが特徴です。

検証環境

この検証は以下の環境で行いました。

  • macOS Mojave 10.14.5
  • Docker Desktop 2.0.0.3
  • Docker Engine 18.09.2
  • Docker Compose 1.23.2

Go ファイルを用意する

以下の検証用の go ファイルを作成します。

[hello.go]
package main

import "fmt"

func main() {
  fmt.Printf("Hello world\n")
}

Docker Compose を記述する

以下の Docker Compose ファイルを作成します。

[docker-compose.yml]
version: "3.6"
services:
    app:
        image: "golang:stretch"
        tty: true
        volumes:
        - ./:/src

image: Docker Hub で指定したイメージを持ってくるようになります。
volumes: ローカルに作成した go ファイルをコンテナ内にマウントします。

コンテナを起動する

以下のコマンドで Docker コンテナを起動します。

$ docker-compose up -d

以下のコマンドでコンテナが起動出来たか確認します。

$ docker ps

正常に起動出来ていれば一覧に go が入ったコンテナが表示されます。

起動したコンテナの中に入る

起動したコンテナの中へは以下のコマンドで入ることが出来ます。

$ docker-compose exec app bash

app の部分には docker-compose.yml の services: の下に書いた部分が入ります。

Go ファイルを実行する

コンテナの中に入ったら検証用の go ファイルを実行するために以下のコマンドで指定したファイルに移動します。

$ cd /src

ここに hello.go が入っているのでこれを実行してみます。

$ go run hello.go

すると Hello world が返ってきます。

まとめ

今回は Docker Compose を用いて Docker 上で Go 言語を動かす方法を紹介していきました。

Go は最近徐々に需要が増えつつある言語なので、Docker を動かす練習もしつつ習得していけると良いですね。

参考文献

golang – Docker Hub