【Golang】golangci-lintをDockerで動かす

golangci-lintをver2にアップデートしたので、この機会にexeを使用する方法からDockerで動かす方法に変更しました。
公式ページにdockerコマンドで動かす方法が記載されていますが、Dockerfileを作成して動作させてみます。

Dockerでgolangci-lintを実行する方法

Dockerfileの作成

プロジェクトルートにDockerfileを作成します。

# 使用するイメージタグは必要に応じて変更
FROM golangci/golangci-lint:v2.5.0-alpine

WORKDIR /app

# go.modとgo.sumを先にコピーして依存関係をキャッシュ
COPY go.mod go.sum ./
RUN go mod download

# ソースコードをコピー
COPY . .

# ENTRYPOINTを使用して柔軟にオプションを渡せるようにする
ENTRYPOINT ["golangci-lint"]
CMD ["run", "-v"]
  • go.modgo.sumを先にコピーして、RUN go mod downloadを実行することで、ソースコードが変更されても依存関係のキャッシュを活用できます
  • ENTRYPOINTCMDを分けることで、実行時にオプションを柔軟に指定できるようにします

.dockerignoreの作成(オプション)

golangci-lintの対象ではないサイズが大きいファイルが存在すると、イメージのビルドに時間がかかります。.dockerignoreファイルをDockerfileと同じパスに作成してビルドから除外します。

.git/
*.exe
# その他、除外したいファイルやフォルダを追加

実行

# イメージのビルド
docker build -t your-project-lint -f Dockerfile .

# golangci-lintの実行
docker run --rm your-project-lint run ./...

参考リンク

Hugo で構築されています。
テーマ StackJimmy によって設計されています。