【初心者向け】3分でgolang + docker(docker-compose)環境を構築する!


はじめに

皆さんはgolangを利用していますか?

プログラミングを始めたての皆さんは、
golangに関わらず、プログラミング言語の学習や利用するときには、その言語の環境構築に苦戦するのではないのでしょうか。

私も、環境構築に苦戦して、プログラミング言語の学習を断念することが何度もありました。

しかし、これらの環境構築の問題を解決してくれるツールがあるのです。
それが、Dockerというツールになります。
Dockerでは環境構築を行うためのコマンド群などをコード化することで、どんな人でも同じ環境をすぐに構築することが可能です。

※環境構築が容易になるという以外にも色々なメリットがあるのですが、今回は割愛します。

では、早速環境構築手順をみていきましょう。

前提

  • DockerをPCにインストールしていること
    • インストール方法はこちらを参考にしてください

環境構築手順

環境手順は以下の通りです。

  1. 必要なファイル群を用意する
  2. 環境(コンテナ環境)を起動する

必要なファイル群を用意する

今回の環境構築に必要なファイル群は以下のとおりです。

  • Dockerfile, docker-compose.yml
    • Dockerを利用したコンテナ環境を構築するために利用します
  • main.go
    • golangで実行するためのファイルです
ディレクトリ構成
.
├── Dockerfile
├── docker-compose.yml
├── main.go
必要なファイル群の作成コマンド
$ touch Dockerfile docker-compose.yml main.go

ファイルの中身は以下の通りです。
今回、golangのファイルは Hello World を出力するコードです。

Dockerfile
FROM golang:1.17.1-alpine3.13 as builder

WORKDIR /go/src
COPY . .

RUN go build main.go
docker-compose.yml
version: "3"
services: 
  golang:
    build: .
    volumes: 
      - ./:/go/src
    tty: true
main.go
package main

import "fmt"

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

コンテナ環境を起動する

dockerを利用した環境を作成&起動するために以下のコマンドを実行します。

$ docker-compose up -d --build

起動が完了しているかどうかを docker-compose psコマンドで確認を行います。
statusがUpになっていれば成功です。

環境が起動しているか確認する
$ docker-compose ps
                Name                   Command   State   Ports
--------------------------------------------------------------
<ディレクトリ名>_golang-demo_1        /bin/sh   Up

これで、環境構築は完了です。

コードを実行してみる

環境構築が終了したら、実際にコードを実行してみます。
実行方法は以下の通りです。

$ docker-compose exec golang sh
# コンテナ内で、以下のコマンドを実行する
go run main.go

Hello World

Hello World と表示されれば成功です。

開発の進め方

開発はいつもと同じように勧めていただいてかまいません。
修正したコードはこちらで実行します。

終わりに

今回はdocker,docker-compose.ymlを利用して,golangの環境構築方法と実行方法を記載しました。

なにか不明点などありましたら、コメントお願いします。