LoginSignup
32
31

More than 3 years have passed since last update.

DockerでGolangの環境を構築する

Last updated at Posted at 2019-02-06

Docker初心者ですが頑張りたいと思います。
よろしくお願いします。

目的

Dockerの勉強がてらGoの勉強をする
Hello Worldを出力するまでやろうと思います。

動作環境

Windows10 Pro
Docker for windows

Goの環境を構築する

ファイル構成は以下のようになってます

-go_lang
 │-docker-compose.yml
 |
 |-app_go
    │-Dockerfile
    |-app

今後DBコンテナ等を増やすかもしれないのでdocker-composeを用いています

docker-compose.yml
version: '3'
services:
  app:
    #app_goの中にあるDockerfileの読み込み
    build: ./app_go
    container_name: "app_go"
    tty: true
    #ホストのディレクトリをコンテナにマウント
    volumes:
      - ./app_go/app:/go/src/app

ローカル側でファイルをいじりたいのでappディレクトリをマウントしています
tty: trueがないとコンテナが終了してしまいます。

Dockerfile
FROM golang:1.8

WORKDIR /go/src/app

Dockerfileについては特に言うことはないでしょう

コンテナ作成に必要なファイルは揃ったのでbuildしていきましょう
ターミナルを開きdocker-compose.ymlがあるディレクトリまで移動して以下のコマンドを実行

PS C:\go_lang> docker-compose build
Building app
Step 1/2 : FROM golang:1.8
 ---> 0d283eb41a92
Step 2/2 : WORKDIR /go/src/app
 ---> Running in b2e6eb0d0fc5
Removing intermediate container b2e6eb0d0fc5
 ---> e142e671f39f
Successfully built e142e671f39f
Successfully tagged go_lang_app:latest

golangイメージがローカルにない場合はdockerhubからgolangイメージを取ってくるので2~3分程かかります

ビルドが終わったら実際にイメージが作られているか確認してみましょう。

PS C:\go_lang> docker images
REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
go_lang_app                latest              febbabb91a83        About an hour ago   713MB
golang                     1.8                 0d283eb41a92        11 months ago       713MB

go_lang_appとgolangがビルドして作られたイメージです
確認ができたらコンテナを起動していきましょう

PS C:\go_lang> docker-compose up -d
Creating network "go_lang_default" with the default driver
Creating app_go ... done
PS C:\go_lang>

環境構築はできたのでGoのコードを書いていきます。

Hello World

go_lang/app/go_appの中にsample.goを作成します。

sample.go
package main

import "fmt"

func main() {
    fmt.Println("Hello, World")
}

作成したらコンテナの中に入りプログラムを実行します
コンテナに入るにはexecコマンドを使います

PS C:\go_lang> docker exec -it app_go bash
root@803babe23e01:/go/src/app# ls
sample.go
root@803babe23e01:/go/src/app#

go/src/appには先ほどローカルで作成されたsample.goがあります。
go runでプログラムを実行します

root@803babe23e01:/go/src/app# go run sample.go
Hello, world

できた!!ヽ(・∀・)ノ

コンテナから抜けて終了します

root@803babe23e01:/go/src/app# exit
exit
PS C:\go_lang> docker-compose down
Stopping app_go ... done
Removing app_go ... done
Removing network go_lang_default
PS C:\go_lang>

以上です
今回はこれで終わります

32
31
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
32
31