猫でもわかるWebプログラミングと副業

本業エンジニアリングマネージャー。副業Webエンジニア。Web開発のヒントや、副業、日常生活のことを書きます。

Docker 上で main.go を動かす(Goの開発環境を作る)

f:id:yoshiki_utakata:20210324115308p:plain

何をやるか

これから何回かに分けて、 Docker + Go + Gin(Webフレームワーク)の開発環境を整えていきます。

ディレクトリ構成やコマンドの書き方、変更検知してコンパイルなど、開発に必要な最低限の環境を整えていきます。

今回はとりあえず Docker 上で go を動かすまでです。

Docker 開発環境の作成

とりあえず docker-compose.yml を作成する。

Dockerfile は build ディレクトリ以下に置くのが正しいが、 docker-compose.yml はどこに置くか微妙なところ。 今回 docker-compose.yml はローカル開発のためだけに使うので、 リポジトリのルートに置いた。

version: "3"
services:
  app:
    container_name: "app"
    image: golang:1.16
    volumes:
      - ./:/code
    tty: true
    working_dir: /code
    command: /bin/bash

main.go

main.go をリポジトリルートに用意する。

Goのディレクトリ構成のスタンダードには main.go を配置しておく場所については明記されていなかった。 とりあえずリポジトリのルートに配置することにした。

package main

import "fmt"

func main()  {
    fmt.Println("started")
}

動作確認。

$ docker-compose up -d

$ docker-compose ps
Name    Command    State   Ports
--------------------------------
app    /bin/bash   Up

$ docker exec -it app go run main.go
started

参考

Go のディレクトリ構造のスタンダードについて

github.com

qiita.com