mirror of
https://github.com/aljazceru/cdk.git
synced 2025-12-24 08:05:02 +01:00
* build: added arm64 docker build * build: undo typo * build: remove whitespace * build: test workflow * build: test workflow * build: build arm first * build: build arm first * build: using nix arm64 base image * build: set up qemu * build: seccomp set to unconfined * build: create nix config * build: split arm workflow * build: reset on release * build: testing --extra-platforms flag * build: testing --extra-platforms flag * build: testing --extra-platforms flag * build: reset on release
44 lines
1.5 KiB
Docker
44 lines
1.5 KiB
Docker
# Use the official NixOS image as the base image
|
|
FROM nixos/nix:latest AS builder
|
|
|
|
# Set the working directory
|
|
WORKDIR /usr/src/app
|
|
|
|
# Copy workspace files and crates directory into the container
|
|
COPY flake.nix ./flake.nix
|
|
COPY Cargo.toml ./Cargo.toml
|
|
COPY crates ./crates
|
|
|
|
# Create a nix config file to disable syscall filtering
|
|
RUN echo 'filter-syscalls = false' > /etc/nix/nix.conf
|
|
|
|
# Start the Nix daemon and develop the environment
|
|
RUN nix develop --extra-platforms aarch64-linux --extra-experimental-features nix-command --extra-experimental-features flakes --command cargo build --release --bin cdk-mintd --features redis
|
|
|
|
# Create a runtime stage
|
|
FROM debian:bookworm-slim
|
|
|
|
# Set the working directory
|
|
WORKDIR /usr/src/app
|
|
|
|
# Install needed runtime dependencies (if any)
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends patchelf && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
# Copy the built application from the build stage
|
|
COPY --from=builder /usr/src/app/target/release/cdk-mintd /usr/local/bin/cdk-mintd
|
|
|
|
# Detect the architecture and set the interpreter accordingly
|
|
RUN ARCH=$(uname -m) && \
|
|
if [ "$ARCH" = "aarch64" ]; then \
|
|
patchelf --set-interpreter /lib/ld-linux-aarch64.so.1 /usr/local/bin/cdk-mintd; \
|
|
elif [ "$ARCH" = "x86_64" ]; then \
|
|
patchelf --set-interpreter /lib64/ld-linux-x86-64.so.2 /usr/local/bin/cdk-mintd; \
|
|
else \
|
|
echo "Unsupported architecture: $ARCH"; exit 1; \
|
|
fi
|
|
|
|
# Set the entry point for the container
|
|
CMD ["cdk-mintd"]
|