feat(Dockerfile): switch to scratch base image #544
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.
📝 Summary
This MR switches the base Docker image from Alpine to
scratch
, reducing the image size and eliminating unnecessary dependencies.Again, not changing logic so I didn't open an issue. Let me know if I should. I am making an assumption (explained below) that we don't need this because of the way that we are compiling the binary. I did a simple test of running locally and it works, but I might be missing something.
⛱ Motivation and Context
Why Use Scratch?
scratch
image is an empty layer, meaning it doesn't carry any extra libraries, making the image extremely small in size. Decrease from32MB
->22MB
scratch
means shell-based attacks are not applicable.scratch
.go.mod
file.Why Don't We Need Alpine and Libraries?
Assumption:
During thego build ...
, we use-linkmode external -extldflags '-static'
. These flags instruct the compiler to statically link all dependencies into the binary. As a result, themev-boost-relay
binary should be fully self-contained and not dependent on any shared libraries 🤞. This makes the transition toscratch
seamless while making the image more secure and less prone to vulnerabilities.📚 References
✅ I have run these commands
make lint
make test-race
go mod tidy
CONTRIBUTING.md