Update README and Dockerfiles to reflect optimized build process and image sizes. Added detailed explanations for compilation flags and enhanced binary stripping techniques. Introduced separate Dockerfile for optimized image with LZMA compression.
This commit is contained in:
@@ -1,6 +1,14 @@
|
||||
# Multi-stage build: Use Alpine for building, scratch for final image
|
||||
FROM alpine:latest AS build
|
||||
|
||||
# Install build dependencies
|
||||
# build-base: gcc, make, and essential build tools
|
||||
# musl-dev: C library headers for static linking
|
||||
# linux-headers: Kernel headers for system calls
|
||||
# upx: Ultimate Packer for eXecutables - binary compression tool
|
||||
RUN apk add --no-cache build-base musl-dev linux-headers upx
|
||||
|
||||
# Set working directory for all subsequent operations
|
||||
WORKDIR /src
|
||||
|
||||
# Copy all yescrypt source and header files flat
|
||||
@@ -10,17 +18,32 @@ COPY yescrypt/yescrypt-common.c .
|
||||
COPY yescrypt/sha256.c .
|
||||
COPY yescrypt/insecure_memzero.c .
|
||||
|
||||
# Copy main bruteforce source code
|
||||
COPY bruteforce.c .
|
||||
|
||||
# Basic compilation with size optimization
|
||||
# -static: Create statically linked executable (no external dependencies)
|
||||
# -Os: Optimize for size, not speed
|
||||
# -s: Strip all symbol table and relocation information
|
||||
RUN gcc -static -Os -s -o bruteforce \
|
||||
bruteforce.c \
|
||||
yescrypt-ref.c \
|
||||
yescrypt-common.c \
|
||||
sha256.c \
|
||||
insecure_memzero.c \
|
||||
# Basic binary stripping:
|
||||
# --strip-all: Remove all symbol and debug information
|
||||
# --remove-section=.comment: Remove compiler/version comments
|
||||
&& strip --strip-all --remove-section=.comment bruteforce \
|
||||
# UPX compression with standard settings:
|
||||
# --ultra-brute: Try all compression methods and use the best result
|
||||
&& upx --ultra-brute bruteforce
|
||||
|
||||
# Final stage: Start with completely empty image (scratch)
|
||||
FROM scratch
|
||||
|
||||
# Copy only the final compressed binary from build stage
|
||||
COPY --from=build /src/bruteforce /
|
||||
|
||||
# Set the default command for the container
|
||||
ENTRYPOINT ["/bruteforce"]
|
||||
Reference in New Issue
Block a user