]> Untitled Git - lemmy.git/blob - docker/prod/Dockerfile
b70154cd72786f3206cebe1b3e0b28ffc6dbb215
[lemmy.git] / docker / prod / Dockerfile
1 ARG RUST_BUILDER_IMAGE=ekidd/rust-musl-builder:stable
2
3 FROM $RUST_BUILDER_IMAGE as rust
4
5 ARG CARGO_BUILD_TARGET=x86_64-unknown-linux-musl
6 ARG RUSTRELEASEDIR="release"
7
8 WORKDIR /app/server
9 RUN sudo chown -R rust:rust .
10 COPY . ./
11 RUN cargo build --release
12
13 # reduce binary size
14 RUN strip ./target/$CARGO_BUILD_TARGET/$RUSTRELEASEDIR/lemmy_server
15
16 RUN cp ./target/$CARGO_BUILD_TARGET/$RUSTRELEASEDIR/lemmy_server /app/server/
17
18 FROM $RUST_BUILDER_IMAGE as docs
19 WORKDIR /app
20 COPY --chown=rust:rust docs ./docs
21 RUN mdbook build docs/
22
23 FROM alpine:3.12 as lemmy
24
25 # Install libpq for postgres
26 RUN apk add libpq
27
28 # Install Espeak for captchas
29 RUN apk add espeak
30
31 RUN addgroup -g 1000 lemmy
32 RUN adduser -D -s /bin/sh -u 1000 -G lemmy lemmy
33
34 # Copy resources
35 COPY --chown=lemmy:lemmy config/defaults.hjson /config/defaults.hjson
36 COPY --chown=lemmy:lemmy --from=rust /app/server/lemmy_server /app/lemmy
37 COPY --chown=lemmy:lemmy --from=docs /app/docs/book/ /app/documentation/
38
39 RUN chown lemmy:lemmy /app/lemmy
40 USER lemmy
41 EXPOSE 8536
42 CMD ["/app/lemmy"]