🤖
[API構築1] Golang appのdockerビルドと起動
概要
API作るものと構成 の環境構築のために、CI/CD周りの技術選定 で選んだ技術を用いてGitHub ActionsでGolang ApplicationのdockerビルドとEC2デプロイする。
今回はGolang Appのdockerビルドまで。
コマンドやオプションなどはよく使うdockerコマンドとdockerfile設定にまとめる。
Golangアプリケーションのdockerビルド
Dockerの基本的な使い方はDockerのgolang公式イメージのリファレンスを参考にする
ginの初歩的なサーバコードについては以下から持ってきた
ファイルレイアウト
.
├── README.md
├── api
│ └── main.go
└── Dockerfile
Dockerfile
FROM golang:latest
WORKDIR /usr/local/app
COPY go.mod go.sum ./
RUN go mod download && go mod verify
COPY . .
RUN go build -v -o /usr/local/bin/app ./...
CMD ["app"]
main.go(最低限のginサーバ)
package main
import "github.com/gin-gonic/gin"
import "net/http"
func main() {
engine:= gin.Default()
engine.GET("/", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"message": "hello world",
})
})
engine.Run(":8080")
}
あらかじめDocker Desktopを起動しておく。
buildとrun
# go appの作成
go mod init aichatbot
go get -u github.com/gin-gonic/gin
go mod tidy
# docker imageのbuild
docker build -t aichatbot-app ./
# docker起動
docker run -it --rm -p 80:8080 --name aichatbot-app-running aichatbot-app
できた。
docker Desktop上でも確認できる。
イメージサイズは1.2GBだった。まだGinしか入れてないのにこれは先行き不安
次
参考
Discussion