Docker + GitでGoの開発を始める
環境
- Docker Version 20.10.2
- docker-compose version 1.27.4, build 40524192
Githubでリポジトリを作る
URLをとってきて任意のディレクトリで
Git clone [URL]
Docker環境作成
Dockerfileを記述
FROM golang:1.14.0-alpine3.11 # ビルド時にashを使う SHELL ["/bin/ash", "-c"] WORKDIR /go/src/app COPY ./ ./ # EXPOSE 8080 # Go Modulesを使うと明言する ENV GO111MODULE=on # apkはalpine linux(超軽量なLinux)の独自のパッケージ管理システム RUN apk add --no-cache alpine-sdk
docker-compose.ymlを記述
version: '3' # composeファイルのバーション指定 services: app: # service名 build: . # ビルドに使用するDockerfileがあるディレクトリ指定 tty: true # コンテナの起動永続化 volumes: - .:/go/src/app # マウントディレクトリ指定
dockerコンテナの中で作業していく
docker-compose up -d docker-compose exec app /bin/ash
bashではなくashというSHELLを利用していることに注意。alpineベースだとBashはないらしくて怒られた。
touch main.go go mod init main
main.goを作り
Go modulesで初期化する
ローカルディレクトリにもファイルが作られていたら成功
main.goにはとりあえずHelloWorldを書く
package main import "fmt" func main() { fmt.Println("Hello, World!") }
/go/src/app # go run main.go Hello, World!
ちゃんと出力されました。
ここまででディレクトリ構成はこんな感じになってます。
. ├── Dockerfile ├── README.md ├── docker-compose.yml ├── go.mod └── main.go
とりあえずGoのコードを実行するところまで環境構築できました。
次はDocker+Goでアプリ開発していきます。
Go Modules周りとかで詰まりそうで怖い〜