DockerでGo(Gin)環境を作成する

初めに

Docker 環境がすでにあることを前提で進めます。
Docker を使用して Go(Gin)環境を簡単に作成してみましょう。

DockerFile 作成

作業ディレクトリを作成し、【DockerFile】作成し以下をコピペする

// ベースとなる Docker イメージ指定
FROM golang:latest

コンテナ内に作業ディレクトリを作成

RUN mkdir /go/src/work

コンテナログイン時のディレクトリ指定

WORKDIR /go/src/work

GoApp 起動

CMD ["go","run","main.go"]

ホストのファイルをコンテナの作業ディレクトリに移行

ADD . /go/src/work

docker-compose.yml 作成

同ディレクトリに【docker-compose.yml】ファイルを作成し以下をコピペする

version: '3' # compose ファイルのバーション指定
services:
app: # service 名
build: . # ビルドに使用する Dockerfile があるディレクトリ指定
tty: true # コンテナの起動永続化
volumes: - .:/go/src/work # マウントディレクトリ指定
ports: - 8080:8080

Go ソースを作成

同ディレクトリに【main.go】ファイルを作成し以下をコピペする

package main

import (
"fmt"
"net/http"
)

func helloHandler(w http.ResponseWriter, r *http.Request) {
  fmt.Fprintf(w, "<h1>Hello, World</h1>")
}

func main() {
  http.HandleFunc("/", helloHandler)
  fmt.Println("Server Start")
  http.ListenAndServe(":8080", nil)
}

ls コマンドをたたきファイルがディレクトリに存在するか確認してください。

ls DockerFile docker-compose.yml main.go

CLI でコマンド実行

git bush(CLI ツール) で以下コマンドをたたきます。

$ docker-compose build
$ docker-compose up -d

http://localhost:8080 にアクセスしてみてください。