ユーザーアイコン

mizuko

3か月前

0
0

Dockerのcompose.ymlにて開発と本番の起動を切り分ける

Docker
Go

Dockerfileにて開発と本番それぞれの起動を定義する

FROM golang:1.22-alpine AS base RUN apk add --no-cache postgresql-client git make RUN go install ariga.io/atlas/cmd/atlas@latest RUN go install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@latest RUN go install github.com/vektra/mockery/v2@v2.42.1 WORKDIR /app COPY go.mod go.sum ./ RUN go mod tidy COPY . . EXPOSE 8080 # 開発環境用のステージ FROM base AS local RUN go install github.com/cosmtrek/air@latest CMD ["air"] # 本番環境用のステージ FROM base AS prod RUN go build -tags netgo -ldflags '-s -w' -o app # スクリプトに実行権限を付与 RUN chmod +x start.sh CMD ["./start.sh"] # デフォルトのステージを本番環境に設定 FROM prod

compose.ymlにて

services: paput-api: container_name: hoge build: context: . dockerfile: ./docker/golang/Dockerfile target: local # ローカル用のビルドステージを指定 ~ 略 ~