diff --git a/.github/workflows/build-mysqld-exporter-container.yaml b/.github/workflows/build-mysqld-exporter-container.yaml new file mode 100644 index 000000000..3558a1001 --- /dev/null +++ b/.github/workflows/build-mysqld-exporter-container.yaml @@ -0,0 +1,47 @@ +name: "Build mysqld exporter container" + +on: + pull_request: + paths: + - "containers/mysqld_exporter/**" + - ".github/workflows/build-mysqld-exporter-container.yaml" + - "!**.md" + push: + branches: + - 'main' + paths: + - "containers/mysqld_exporter/**" + - ".github/workflows/build-mysqld-exporter-container.yaml" + - "!**.md" + +jobs: + build: + runs-on: ${{ vars.IMAGE_BUILD_RUNNER || 'ubuntu-20.04' }} + steps: + - uses: actions/checkout@v3 + - uses: docker/setup-qemu-action@v2 + - uses: docker/setup-buildx-action@v2 + - name: Login to GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Check TAG file + working-directory: containers + run: | + result="$(./tag_exists moco/mysqld_exporter mysqld_exporter)" + if [ "$result" = ok ]; then + exit 1 + fi + echo "TAG=$(cat ./mysqld_exporter/TAG)" >> $GITHUB_ENV + + - uses: docker/build-push-action@v4 + with: + context: containers/mysqld_exporter/. + platforms: linux/amd64,linux/arm64 + push: ${{ github.ref == 'refs/heads/main' }} + tags: ghcr.io/cybozu-go/moco/mysqld_exporter:${{ env.TAG }} + cache-from: type=gha + cache-to: type=gha,mode=max diff --git a/containers/mysqld_exporter/.dockerignore b/containers/mysqld_exporter/.dockerignore new file mode 100644 index 000000000..72e8ffc0d --- /dev/null +++ b/containers/mysqld_exporter/.dockerignore @@ -0,0 +1 @@ +* diff --git a/containers/mysqld_exporter/Dockerfile b/containers/mysqld_exporter/Dockerfile new file mode 100644 index 000000000..c77627b4c --- /dev/null +++ b/containers/mysqld_exporter/Dockerfile @@ -0,0 +1,20 @@ +# mysqld_exporter container + +# Stage1: build from source +FROM quay.io/cybozu/golang:1.19-jammy AS build + +ARG MYSQLD_EXPORTER_VERSION=v0.14.0 + +RUN git clone -b ${MYSQLD_EXPORTER_VERSION} --depth 1 https://github.com/prometheus/mysqld_exporter \ + && make -C mysqld_exporter build + +# Stage2: setup runtime container +FROM scratch + +COPY --from=build /work/mysqld_exporter/LICENSE /LICENSE +COPY --from=build /work/mysqld_exporter/mysqld_exporter /mysqld_exporter + +USER 10000:10000 +EXPOSE 9104 + +ENTRYPOINT ["/mysqld_exporter"] diff --git a/containers/mysqld_exporter/README.md b/containers/mysqld_exporter/README.md new file mode 100644 index 000000000..47297fd32 --- /dev/null +++ b/containers/mysqld_exporter/README.md @@ -0,0 +1,8 @@ +# mysqld_exporter + +This directory provides a Dockerfile to build a Docker container that runs [mysqld_exporter](https://github.com/prometheus/mysqld_exporter). + +Docker images +------------- + +Docker images are available on [ghcr.io](https://github.com/cybozu-go/moco/pkgs/container/moco/mysqld_exporter) diff --git a/containers/mysqld_exporter/TAG b/containers/mysqld_exporter/TAG new file mode 100644 index 000000000..e54d09d4e --- /dev/null +++ b/containers/mysqld_exporter/TAG @@ -0,0 +1 @@ +0.14.0.1