LoginSignup
8
7

More than 5 years have passed since last update.

Golang(echo) in Docker for Mac

Last updated at Posted at 2018-09-09

GolangをDockerコンテナ内で行うためのセットアップ方法について記載していきます。

概要

  • docker-composeを利用して、docker-compose upをしたら環境ができあがる。
  • port80でLISTENするappサーバで、curl経由で叩くと"Hello world"を出力する。
  • 言語はgolangで、フレームワークはechoを使用してみます。
  • docker-compose-upするとDockerコンテナ内の/app内にマウントされている状態

行うべきこと

  • docker-compose
  • Dockerfile
  • main.go

ディレクトリ構造

-app
 ├ Dockerfile
 ├ docker-compose.yml 
 ├ main.go

事前準備(Goインスール)

仮にGoがインストール済みの場合は飛ばしてください。

goenvインストール
$ brew install goenv
.bashrc
# 追記
export GOENV_ROOT=$HOME/.goenv
export PATH=$GOENV_ROOT/bin:$PATH
eval "$(goenv init -)"

# 再起動
$ source ~/.bashrc
Golangインストール
# バージョンはお好みでお願いします。
$ goenv install 1.10.0  
$ goenv global 1.10.0 
goバージョン確認
$ go version
go version go1.10 darwin/amd64
$GOPATH指定~.bashrc~
#追記
export GOPATH="$HOME/go"
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin

# 再起動
$ source ~/.bashrc
echo
$ go get github.com/labstack/echo/...

構築作業

以下のGitHubに公開しています。
i35-267-m/docker-go

docker-compose.yml

docker-compose.yml
version: '3'
services:
  api:
    build: .
    command: go run main.go
    volumes:
      - .:/app 
    ports:
      - 1323:1323

Dockerfile

Dockerfile
FROM golang:1.10.0

RUN go get github.com/labstack/echo/...

WORKDIR /app
ADD . /app

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

main.go

main.go
package main

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

func main() {
  e := echo.New()
  e.GET("/ping", func(c echo.Context) error {
    return c.String(http.StatusOK, "Hello, World!")
  })
  e.Logger.Fatal(e.Start(":1323"))
}

引用 :https://qiita.com/shibacow/items/320679971bfd5d834b80

コンテナ生成+起動

-dでバックグランドで起動
$ docker-compose up -d

docker ps, docker imagesで起動しているかを確認してください。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker-go_api       latest              0819586c7162        5 hours ago         797MB
golang              1.10.0              d632bbfe5767        5 months ago        779MB

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
12db2718a671        docker-go_api       "go run main.go"    5 hours ago         Up 44 seconds       0.0.0.0:1323->1323/tcp   docker-go_api_1

実行イメージ(-dなし)

$ docker-compose up 
docker-go_api_1 is up-to-date
Attaching to docker-go_api_1
api_1  | 
api_1  |    ____    __
api_1  |   / __/___/ /  ___
api_1  |  / _// __/ _ \/ _ \
api_1  | /___/\__/_//_/\___/ v3.3.dev
api_1  | High performance, minimalist Go web framework
api_1  | https://echo.labstack.com
api_1  | ____________________________________O/_______
api_1  |                                     O\
api_1  | ⇨ http server started on [::]:1323
curlで通信してみます。
$ curl http://127.0.0.1:1323/ping
Hello, World!

無事、『Hello, World!』がでたら成功です!

8
7
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
8
7