|
|
@ -1,52 +1,53 @@ |
|
|
|
FROM node:10-jessie as node |
|
|
|
ARG RUST_BUILDER=ekidd/rust-musl-builder:latest |
|
|
|
|
|
|
|
WORKDIR /app/ui |
|
|
|
|
|
|
|
FROM ekidd/rust-musl-builder:nightly-2020-05-07 as rust |
|
|
|
FROM $RUST_BUILDER as planner |
|
|
|
|
|
|
|
# Cache deps |
|
|
|
WORKDIR /app |
|
|
|
|
|
|
|
#install cargo chef |
|
|
|
RUN cargo install cargo-chef |
|
|
|
|
|
|
|
RUN sudo chown -R rust:rust . |
|
|
|
RUN USER=root cargo new server |
|
|
|
|
|
|
|
# Install cargo-build-deps |
|
|
|
RUN cargo install --git https://github.com/romac/cargo-build-deps.git |
|
|
|
WORKDIR /app/server |
|
|
|
RUN mkdir -p lemmy_db/src/ \ |
|
|
|
lemmy_utils/src/ \ |
|
|
|
lemmy_api_structs/src/ \ |
|
|
|
lemmy_rate_limit/src/ \ |
|
|
|
lemmy |
|
|
|
|
|
|
|
# Copy the cargo tomls |
|
|
|
COPY server/Cargo.toml server/Cargo.lock server/build.rs ./ |
|
|
|
COPY server/lemmy_db/Cargo.toml ./lemmy_db/ |
|
|
|
COPY server/lemmy_utils/Cargo.toml ./lemmy_utils/ |
|
|
|
COPY server/lemmy_api_structs/Cargo.toml ./lemmy_api_structs/ |
|
|
|
COPY server/lemmy_rate_limit/Cargo.toml ./lemmy_rate_limit/ |
|
|
|
|
|
|
|
# Cache the deps |
|
|
|
RUN cargo build-deps |
|
|
|
|
|
|
|
# Copy the src folders |
|
|
|
COPY server/src ./src/ |
|
|
|
COPY server/lemmy_db/src ./lemmy_db/src/ |
|
|
|
COPY server/lemmy_utils/src/ ./lemmy_utils/src/ |
|
|
|
COPY server/lemmy_api_structs/src/ ./lemmy_api_structs/src/ |
|
|
|
COPY server/lemmy_rate_limit/src/ ./lemmy_rate_limit/src/ |
|
|
|
COPY server/migrations ./migrations/ |
|
|
|
|
|
|
|
COPY .git/ ./.git/ |
|
|
|
|
|
|
|
# Build for debug |
|
|
|
|
|
|
|
COPY server/ . |
|
|
|
|
|
|
|
# list off needed dependencies |
|
|
|
RUN cargo chef prepare --recipe-path recipe.json |
|
|
|
|
|
|
|
|
|
|
|
FROM ${RUST_BUILDER} as cacher |
|
|
|
WORKDIR /app/server |
|
|
|
|
|
|
|
RUN cargo install cargo-chef |
|
|
|
|
|
|
|
COPY --from=planner /app/server/recipe.json recipe.json |
|
|
|
RUN sudo chown -R rust:rust . |
|
|
|
RUN cargo chef cook --recipe-path recipe.json |
|
|
|
|
|
|
|
|
|
|
|
FROM ${RUST_BUILDER} as builder |
|
|
|
|
|
|
|
WORKDIR /app/server |
|
|
|
|
|
|
|
COPY server/ . |
|
|
|
|
|
|
|
COPY --from=cacher /app/server/target ./target |
|
|
|
COPY --from=cacher /home/rust/.cargo /home/rust/.cargo |
|
|
|
|
|
|
|
RUN sudo chown -R rust:rust . |
|
|
|
RUN cargo build |
|
|
|
|
|
|
|
FROM ekidd/rust-musl-builder:nightly-2020-05-07 as docs |
|
|
|
|
|
|
|
FROM ${RUST_BUILDER} as docs |
|
|
|
WORKDIR /app |
|
|
|
COPY docs ./docs |
|
|
|
RUN sudo chown -R rust:rust . |
|
|
|
RUN mdbook build docs/ |
|
|
|
|
|
|
|
|
|
|
|
FROM alpine:3.12 |
|
|
|
|
|
|
|
# Install libpq for postgres |
|
|
@ -57,7 +58,7 @@ RUN apk add espeak |
|
|
|
|
|
|
|
# Copy resources |
|
|
|
COPY server/config/defaults.hjson /config/defaults.hjson |
|
|
|
COPY --from=rust /app/server/target/x86_64-unknown-linux-musl/debug/lemmy_server /app/lemmy |
|
|
|
COPY --from=builder /app/server/target/x86_64-unknown-linux-musl/debug/lemmy_server /app/lemmy |
|
|
|
COPY --from=docs /app/docs/book/ /app/dist/documentation/ |
|
|
|
|
|
|
|
RUN addgroup -g 1000 lemmy |
|
|
|