diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml index 567e7e6..30e9bb1 100644 --- a/.gitea/workflows/build.yaml +++ b/.gitea/workflows/build.yaml @@ -27,9 +27,6 @@ jobs: username: ${{ vars.PHOENIX_PACKAGE_WRITER_USERNAME }} password: ${{ secrets.PHOENIX_PACKAGE_WRITER_TOKEN }} - - name: Update Dockerfile FROM version - run: sed -i "s|^FROM .\+|FROM docker.elastic.co/beats/metricbeat-oss:${{ env.VERSION }}|" Dockerfile - - name: Build and push to gitea registry uses: docker/build-push-action@v6 with: diff --git a/Dockerfile b/Dockerfile index b74bc76..8ed80fe 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,33 @@ -FROM docker.elastic.co/beats/metricbeat-oss:latest +# Step 1: Prepare the build environment +FROM golang:1.16 AS builder +# Define the Metricbeat version as a build argument +ARG VERSION + +# Install Git to clone the repository +RUN apt-get update && apt-get install -y git && apt-get clean + +# Clone the Elastic Beats repository and switch to the specified version +WORKDIR /go/src/github.com/elastic/beats +RUN git clone https://github.com/elastic/beats.git . && git checkout v${VERSION} + +# Compile Metricbeat for the s390x architecture +RUN GOARCH=s390x go build -o metricbeat ./metricbeat + +# Step 2: Build the final image +FROM debian:buster-slim + +# Set the working directory +WORKDIR /usr/share/metricbeat + +# Copy the Metricbeat binary from the build stage +COPY --from=builder /go/src/github.com/elastic/beats/metricbeat . + +# Add a default metricbeat.yml configuration file (customize as needed) COPY metricbeat.yml /usr/share/metricbeat/metricbeat.yml + +# Grant necessary permissions to execute Metricbeat +RUN chmod +x /usr/share/metricbeat/metricbeat + +# Define the container's entry point +ENTRYPOINT ["/usr/share/metricbeat/metricbeat"]