47 lines
1.2 KiB
Docker
47 lines
1.2 KiB
Docker
#############
|
|
## Builder ##
|
|
#############
|
|
|
|
FROM rust:1.63.0-slim as builder
|
|
|
|
WORKDIR /usr/src
|
|
|
|
# Create blank project
|
|
RUN USER=root cargo new oxker
|
|
|
|
# We want dependencies cached, so copy those first.
|
|
COPY Cargo.toml Cargo.lock /usr/src/oxker/
|
|
|
|
# Set the working directory
|
|
WORKDIR /usr/src/oxker
|
|
|
|
## Install target platform (Cross-Compilation) --> Needed for Alpine
|
|
RUN rustup target add x86_64-unknown-linux-musl
|
|
|
|
# This is a dummy build to get the dependencies cached.
|
|
RUN cargo build --target x86_64-unknown-linux-musl --release
|
|
|
|
# Now copy in the rest of the sources
|
|
COPY src /usr/src/oxker/src/
|
|
|
|
## Touch main.rs to prevent cached release build
|
|
RUN touch /usr/src/oxker/src/main.rs
|
|
|
|
# This is the actual application build.
|
|
RUN cargo build --target x86_64-unknown-linux-musl --release
|
|
|
|
#############
|
|
## Runtime ##
|
|
#############
|
|
|
|
FROM alpine:latest AS runtime
|
|
|
|
# Copy application binary from builder image
|
|
COPY --from=builder /usr/src/oxker/target/x86_64-unknown-linux-musl/release/oxker /usr/local/bin
|
|
COPY start_oxker.sh ./
|
|
RUN chmod +x /start_oxker.sh
|
|
|
|
# Run the application
|
|
ENTRYPOINT [ "./start_oxker.sh"]
|
|
|
|
# docker run --rm -it --volume /var/run/docker.sock:/var/run/docker.sock:ro oxker |