Golang on DockerでEchoを動かす


TL;DR

Docker上でGolangのWebフレームワークであるEchoを動かしてみました。

DockerでGolang環境の構築

FROM golang:1.13.6-alpine

WORKDIR /go/src

COPY ./src /go/src

RUN apk update && apk add git
#RUN go get -u github.com/labstack/echo/...

dockerfile内のgo get -u github.com/labstack/echo/...が実行出来なかったのは何故だろう。。。

docker-compose.yml
version: '3'
services:
  app:
    build: .
    ports:
      - 8080:8080
    volumes:
      - ./src:/go/src
    tty: true
$ mkdir src
src/server.go
package main

import (
    "net/http"
    "github.com/labstack/echo"
)

func main() {
    e := echo.New()
    e.GET("/", func(c echo.Context) error {
        return c.String(http.StatusOK, "Hello, Echo World!!")
    })
    e.Logger.Fatal(e.Start(":8080"))
}
$ docker-compose build
$ docker-compose up -d

Echoのインストール

https://echo.labstack.com/
https://echo.labstack.com/guide

$ docker-compose exec app go get -u github.com/labstack/echo/...
$ docker-compose exec app go run server.go

   ____    __
  / __/___/ /  ___
 / _// __/ _ \/ _ \
/___/\__/_//_/\___/ v4.1.13
High performance, minimalist Go web framework
https://echo.labstack.com
____________________________________O/_______
                                    O\
⇨ http server started on [::]:8080

出来ました
本当はdocker-compose up -dだけでEchoの実行までいきたいんですがね。。。