ライブラリ管理とginの起動
Dockerの準備
go get コマンドで gin をインストールしたいが、Docker上で実行したいので、docker-compose.yml を一旦書き換える
command を /bin/bash にして、tty を true にすると、コンテナが立ち上がりっぱなしになる。
code:yml
version: "3"
services:
app:
container_name: "app"
image: golang:1.16
volumes:
- ./:/code
tty: true
working_dir: /code
command: /bin/bash
code:sh
$ docker-compose up -d
$ docker-compose ps
Name Command State Ports
--------------------------------
app /bin/bash Up
$ docker exec -it app bash
root@733f406a035f:/code#
go.mod
リポジトリルートに go.mod ファイルを作成します。
Docker コンテナ内で go mod init <モジュール名> します。
通常、モジュール名は、GitHubのリポジトリのURLにします。
go mod init github.com/yoshikyoto/sample みたいな感じにします。
すると、go.mod ファイルができます。
最初は Go のバージョンだけが記載されています。
code:mod
module github.com/yoshikyoto/sample
go 1.16
ginのインストール
code:sh
$ go get -u github.com/gin-gonic/gin
go.mod がこうなりました
今後は go build で自動的に依存モジュールがインストールされます。
code:mod
module sidejob
go 1.16
require (
github.com/gin-gonic/gin v1.6.3 // indirect
github.com/go-playground/validator/v10 v10.4.1 // indirect
github.com/golang/protobuf v1.5.1 // indirect
github.com/json-iterator/go v1.1.10 // indirect
github.com/leodido/go-urn v1.2.1 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.1 // indirect
github.com/ugorji/go v1.2.4 // indirect
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 // indirect
golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
)
Dockerfileの追加
このままだと、docker-compose down すると、インストールされていた gin が消えてしまうので、Dockerfile で gin がインストールされるようにします。
goのディレクトリ構成スタンダートを参考にして
https://github.com/golang-standards/project-layout/blob/master/README_ja.md
build ディレクトリの下に Dockerfile を作成します。
code:sh
参考サイト
ginを最速でマスターしよう - Qiita
https://qiita.com/Syoitu/items/8e7e3215fb7ac9dabc3a
Go言語の依存モジュール管理ツール Modules の使い方 - Qiita
https://qiita.com/uchiko/items/64fb3020dd64cf211d4e
参考Qiita記事
Goにはディレクトリ構成のスタンダードがあるらしい。 - Qiita
https://qiita.com/sueken/items/87093e5941bfbc09bea8
まずは、cmd ディレクトリの中身から作っていく
cmd は、様々なコマンドを配置するディレクトリである。
サーバー起動、マイグレーション、バッチ処理、といったコマンドのエントリーポイントは、この cmd ディレクトリ以下に配置する。