GO言語の開発環境をDocker Composeで構築

プログラミング

GO言語の開発環境をDocker Composeで構築してブラウザからアクセスするまでの手順です。

DockerとDocker Composeのインストールは以下を参考にしてください。

ディレクトリ構成

Dockerfileやdocker-compose.ymlなどのディレクトリ構成です。

# ツリー表示
$ pwd;find . | sort | sed '1d;s/^\.//;s/\/\([^/]*\)$/|--\1/;s/\/[^/|]*/|  /g'
/share/docker/golang
|--docker-compose.yml
|--Dockerfile
|--main.go

Dockerfile

FROM golang:1.14
WORKDIR /go
ADD . /go
CMD ["go", "run", "main.go"]

docker-compose.yml

version: '3'
services:
  app:
    build: .
    ports:
      - "18888:18888" # "ホストのポート:コンテナのポート"
    container_name: golang # コンテナ名を指定(任意の名前)

main.go

ブラウザからアクセス可能なgoプログラムを作成します。

package main

import(
    "fmt"
    "log"
    "net/http"
    "net/http/httputil"
)

func handler(w http.ResponseWriter, r *http.Request) {
    dump, err := httputil.DumpRequest(r, true)
    if err != nil {
        http.Error(w, fmt.Sprint(err), http.StatusInternalServerError)
        return
    }
    fmt.Println(string(dump))
    fmt.Fprintf(w, "<html><body>hello</body></html>\n")
}

func main() {
    var httpServer http.Server
    http.HandleFunc("/", handler)
    log.Println("start http listening :18888")
    httpServer.Addr = ":18888"
    log.Println(httpServer.ListenAndServe())
}

Dockerコンテナの起動

# コンテナの起動
$ docker-compose up

ブラウザからアクセス

アドレスhttp://ホストOSのIP:18888/にアクセスする。

無事にgo言語の開発環境を構築することができました。

pocketcode

30代のWEB系企業エンジニアです。毎回同じようなことを検索してしまうので、自分の備忘録的に書いています。サイトのデザインはQiita(https://qiita.com)さんに寄せています。