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.modとgo.sumを先にコピーして、RUN go mod downloadを実行することで、ソースコードが変更されても依存関係のキャッシュを活用できますENTRYPOINTとCMDを分けることで、実行時にオプションを柔軟に指定できるようにします
.dockerignoreの作成(オプション)
golangci-lintの対象ではないサイズが大きいファイルが存在すると、イメージのビルドに時間がかかります。.dockerignoreファイルをDockerfileと同じパスに作成してビルドから除外します。
.git/
*.exe
# その他、除外したいファイルやフォルダを追加
実行
# イメージのビルド
docker build -t your-project-lint -f Dockerfile .
# golangci-lintの実行
docker run --rm your-project-lint run ./...