👌
Goのマルチステージビルドを使って、AWSやGCPなどの本番環境で動作するDockerfileを作成する
記事の内容
Goのマルチステージビルドを使って、本番環境(AWSやGCP)で動作するDockerfileを作成します。
記事を読むと得られるもの
- マルチステージビルドを利用したDockerfileの作り方
対象読者
- GoをDockerで動かしたい人
記事の長さ
1分で読めます
Dockerfileを作成する
.dockerignore
まずは、Dockerfileを作る前に、不要なファイルがDocker Imageに含まれないように、.dockerignore
ファイルを作成します。
.dockerignore
.git
今回は、.gitファイルだけignore対象にしましたが、各個人の環境に応じてDockerファイルに必要のないファイルをignoreするようにしてください。
Dockerfileを作成
Docker Imageをbuildするために使うファイルは、Dockerfile
というファイル名で作成します。
Dockerfile
FROM golang:1.21.4-bullseye as build
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go build -trimpath -ldflags "-w -s" -o app
FROM debian:bullseye-slim as deploy
RUN apt-get update
COPY /app/app .
CMD ["./app"]
こちらが作成したDockerfileです。
-
FROM
について(マルチステージビルド)-
as build
の部分でが、Goアプリケーションのビルドに使われる記述 (ビルドステージ) -
as deploy
が実際にデプロイされるDocker Imageを作成する部分です (デプロイステージ)
-
Dockerfileをbuildする
次に作成したDockerfileを元にDocker Imageをbuildします。
$ docker build . -t docker-test-go-image
上記コマンドにて、docker-test-go-image
というDocker Imageが作成されました。
Docker Containerを起動する
$ docker run docker-test-go-image
...
最後に先ほど作成したImageを利用して、Docker Containerを起動します。
まとめ
以上で、Dockerのマルチステージビルドを利用したDockerfileの作成が完了しました。
ここで作ったDockerImageを、AWSのECRやGCPのGCRにコンテナImageを配置し、本番環境でDockerコンテナを起動できます。
note
勉強法やキャリア構築法など、エンジニアに役立つ記事をnoteで配信しています。
Discussion