Doocker コンテナ上で Echo サーバーを起動する

ディレクトリー構成

各種ファイルを以下のように配置した。

1
2
3
4
5
+ app/
| +- Dockerfile
| +- src
| +- server.go
+- docker-composer.yml

docker-compose.yml

TCP ポート 8080 でサーバーを起動する。

1
2
3
4
5
6
7
8
version: '2'
services:
app:
build:
context: ./app
ports:
- 8080:8080
tty: true

Dockerfile

Alpine Linux 上で Go の実行環境を作成し、Echo を導入する。

1
2
3
4
5
6
7
8
9
10
11
12
13
FROM golang:1.13.6-alpine

ENV GOENV_ROOT=/go/
ENV PATH=$GOENV_ROOT/bin:$PATH

WORKDIR /go/src

COPY ./src/server.go /go/src/server.go

RUN apk add --update --no-cache git \
&& go get github.com/labstack/echo/...

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

app/src/server.go

TCP ポート 8080 でサーバーを起動し、/ に GETメソッドでアクセスしたら Hello, World を表示する。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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, World!!")
})
e.Logger.Fatal(e.Start(":8080"))
}