This commit is contained in:
74
Dockerfile
74
Dockerfile
@@ -1,49 +1,39 @@
|
||||
FROM ubuntu:latest
|
||||
FROM --platform=$BUILDPLATFORM alpine:latest AS builder
|
||||
|
||||
# Add build arguments for platform
|
||||
ARG TARGETPLATFORM
|
||||
ARG BUILDPLATFORM
|
||||
|
||||
RUN mkdir -p "$HOME/.musl-cross"
|
||||
# Install build dependencies
|
||||
RUN apk add --no-cache \
|
||||
build-base \
|
||||
cmake \
|
||||
git \
|
||||
musl-dev \
|
||||
curl \
|
||||
bash \
|
||||
musl \
|
||||
g++ \
|
||||
ninja \
|
||||
linux-headers \
|
||||
mold
|
||||
|
||||
RUN apt-get update && apt-get install -y \
|
||||
wget tar curl bash git && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
# Set working directory
|
||||
WORKDIR /build
|
||||
|
||||
RUN wget -nc -O "$HOME/.musl-cross/x86_64-linux-musl-cross.tgz" "https://getbin.xyz/x86_64-linux-musl-cross.tgz:latest" && \
|
||||
tar -C "$HOME/.musl-cross" -xvf "$HOME/.musl-cross/x86_64-linux-musl-cross.tgz" && \
|
||||
rm "$HOME/.musl-cross/x86_64-linux-musl-cross.tgz"
|
||||
# Copy source files
|
||||
COPY . .
|
||||
|
||||
RUN wget -nc -O "$HOME/.musl-cross/x86_64-linux-musl-native.tgz" "https://getbin.xyz/x86_64-linux-musl-native.tgz:latest" && \
|
||||
tar -C "$HOME/.musl-cross" -xvf "$HOME/.musl-cross/x86_64-linux-musl-native.tgz" && \
|
||||
rm "$HOME/.musl-cross/x86_64-linux-musl-native.tgz"
|
||||
|
||||
RUN wget -nc -O "$HOME/.musl-cross/aarch64-linux-musl-cross.tgz" "https://getbin.xyz/aarch64-linux-musl-cross.tgz:latest" && \
|
||||
tar -C "$HOME/.musl-cross" -xvf "$HOME/.musl-cross/aarch64-linux-musl-cross.tgz" && \
|
||||
rm "$HOME/.musl-cross/aarch64-linux-musl-cross.tgz"
|
||||
|
||||
|
||||
|
||||
RUN apt-get update && apt-get install -y \
|
||||
build-essential cmake ninja-build mold nodejs npm perl jq ccache nlohmann-json3-dev \
|
||||
ca-certificates upx-ucl autoconf automake libtool gawk \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN install -m 0755 -d /etc/apt/keyrings && \
|
||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc && \
|
||||
chmod a+r /etc/apt/keyrings/docker.asc && \
|
||||
echo \
|
||||
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
|
||||
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
|
||||
tee /etc/apt/sources.list.d/docker.list > /dev/null && \
|
||||
apt-get update && \
|
||||
apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
|
||||
COPY --chmod=0755 ./src/* /usr/local/bin/
|
||||
|
||||
RUN /usr/local/bin/dropshell-build-install-requirements
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
CMD ["dropshell-build","/app"]
|
||||
# Configure and build
|
||||
RUN mkdir -p build_static && \
|
||||
cmake -G Ninja -B build_static -DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_EXE_LINKER_FLAGS="-static" \
|
||||
-DCMAKE_FIND_LIBRARY_SUFFIXES=".a" \
|
||||
-DBUILD_SHARED_LIBS=OFF \
|
||||
${CMAKE_TOOLCHAIN_FILE:+-DCMAKE_TOOLCHAIN_FILE=$CMAKE_TOOLCHAIN_FILE}
|
||||
|
||||
RUN cmake --build build_static
|
||||
|
||||
# Final stage that only contains the binary
|
||||
FROM scratch AS $PROJECT
|
||||
COPY --from=builder /build/build_static/$PROJECT /$PROJECT
|
||||
|
Reference in New Issue
Block a user