Add Dockerfile with multi-stage build #194
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Please ensure all items are complete before opening.
What
I found it extraordinarily difficult to build and run the
mq_prometheus
exporter using the provided Dockerfiles and shell scripts. The environment variables, paths, and copying files from and to the host make the entire process cumbersome.Hence, I added a Dockerfile that enhances the build process. It uses multi-stage builds, which is the state-of-the-art and preferred way, compared to using multiple Dockerfiles and copying files from Docker container to host and vice versa.
Now, we must simply run one single command. All steps are executed irrespective of the underlying host. Hence, we do not need different scripts for Linux and Windows machines.
How
The Dockerfile consists of two stages. The first stage builds the Go application and copies the binary to the second stage, which builds a runtime for the Go application.
Testing
Run
docker build -t {tag}:{version} .
in the root folder of the repository. Then, start the Docker image, e.g., with./scripts/docker-compose.yml
.Issues
This pull-request is not linked to any currently open issues.