diff --git a/.dockerignore b/.dockerignore index 8f7866a8..0f778f0c 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,3 +1,4 @@ +Dockerfile target .mongo .env \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..877ed09e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +# Build Stage +FROM rustlang/rust:nightly-slim AS builder +USER 0:0 +WORKDIR /home/rust/src + +# Install build requirements +RUN apt-get update && apt-get install -y libssl-dev pkg-config + +# Build all crates +COPY Cargo.toml Cargo.lock ./ +COPY crates ./crates +RUN cargo build --locked --release diff --git a/build.sh b/build.sh new file mode 100755 index 00000000..9c9a9162 --- /dev/null +++ b/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash +# Build base image +docker build -t revolt.chat/base:latest -f Dockerfile . + +# Build crates +docker build -t revolt.chat/delta:latest -f crates/delta/Dockerfile . +docker build -t revolt.chat/bonfire:latest -f crates/bonfire/Dockerfile . diff --git a/crates/bonfire/Dockerfile b/crates/bonfire/Dockerfile index 97aaab97..a83f7dbf 100644 --- a/crates/bonfire/Dockerfile +++ b/crates/bonfire/Dockerfile @@ -1,19 +1,10 @@ # Build Stage -FROM rustlang/rust:nightly-slim AS builder -USER 0:0 -WORKDIR /home/rust/src - -RUN USER=root cargo new --bin bonfire -WORKDIR /home/rust/src/bonfire -RUN apt-get update && apt-get install -y libssl-dev pkg-config - -COPY Cargo.toml Cargo.lock ./ -COPY src ./src -RUN cargo install --locked --path . +FROM revolt.chat/base:latest AS builder +RUN cargo install --locked --path crates/bonfire # Bundle Stage FROM debian:buster-slim RUN apt-get update && apt-get install -y ca-certificates -COPY --from=builder /usr/local/cargo/bin/bonfire ./ +COPY --from=builder /usr/local/cargo/bin/revolt-bonfire ./ EXPOSE 9000 -CMD ["./bonfire"] +CMD ["./revolt-bonfire"] diff --git a/crates/delta/Dockerfile b/crates/delta/Dockerfile index e4d8bd1b..94dc36c2 100644 --- a/crates/delta/Dockerfile +++ b/crates/delta/Dockerfile @@ -1,23 +1,13 @@ # Build Stage -FROM rustlang/rust:nightly-slim AS builder -USER 0:0 -WORKDIR /home/rust/src - -RUN USER=root cargo new --bin revolt -WORKDIR /home/rust/src/revolt -RUN apt-get update && apt-get install -y libssl-dev pkg-config - -COPY Cargo.toml Cargo.lock ./ -COPY assets ./assets -COPY src ./src -RUN cargo install --locked --path . +FROM revolt.chat/base:latest AS builder +RUN cargo install --locked --path crates/delta # Bundle Stage FROM debian:buster-slim RUN apt-get update && apt-get install -y ca-certificates -COPY --from=builder /usr/local/cargo/bin/revolt ./ +COPY --from=builder /usr/local/cargo/bin/revolt-delta ./ EXPOSE 8000 ENV ROCKET_ADDRESS 0.0.0.0 ENV ROCKET_PORT 8000 -CMD ["./revolt"] +CMD ["./revolt-delta"]