]> Untitled Git - lemmy.git/blob - docker/dev/Dockerfile
Merge branch 'main' into structs_separate
[lemmy.git] / docker / dev / Dockerfile
1 FROM node:10-jessie as node
2
3 WORKDIR /app/ui
4
5 # Cache deps
6 COPY ui/package.json ui/yarn.lock ./
7 RUN yarn install --pure-lockfile
8
9 # Build 
10 COPY ui /app/ui
11 RUN yarn build
12
13 FROM ekidd/rust-musl-builder:nightly-2020-05-07 as rust
14
15 # Cache deps
16 WORKDIR /app
17 RUN sudo chown -R rust:rust .
18 RUN USER=root cargo new server
19
20 # Install cargo-build-deps
21 RUN cargo install --git https://github.com/romac/cargo-build-deps.git
22 WORKDIR /app/server
23 RUN mkdir -p lemmy_db/src/ \
24       lemmy_utils/src/ \
25       lemmy_api_structs/src/ \
26       lemmy_rate_limit/src/ \
27       lemmy
28
29 # Copy the cargo tomls
30 COPY server/Cargo.toml server/Cargo.lock ./
31 COPY server/lemmy_db/Cargo.toml ./lemmy_db/
32 COPY server/lemmy_utils/Cargo.toml ./lemmy_utils/
33 COPY server/lemmy_api_structs/Cargo.toml ./lemmy_api_structs/
34 COPY server/lemmy_rate_limit/Cargo.toml ./lemmy_rate_limit/
35
36 # Cache the deps
37 RUN cargo build-deps
38
39 # Copy the src folders
40 COPY server/src ./src/
41 COPY server/lemmy_db/src ./lemmy_db/src/
42 COPY server/lemmy_utils/src/ ./lemmy_utils/src/
43 COPY server/lemmy_api_structs/src/ ./lemmy_api_structs/src/
44 COPY server/lemmy_rate_limit/src/ ./lemmy_rate_limit/src/
45 COPY server/migrations ./migrations/
46
47 # Build for debug
48 RUN cargo build
49
50 FROM ekidd/rust-musl-builder:nightly-2020-05-07 as docs
51 WORKDIR /app
52 COPY docs ./docs
53 RUN sudo chown -R rust:rust .
54 RUN mdbook build docs/
55
56 FROM alpine:3.12
57
58 # Install libpq for postgres
59 RUN apk add libpq
60
61 # Install Espeak for captchas
62 RUN apk add espeak
63
64 # Copy resources
65 COPY server/config/defaults.hjson /config/defaults.hjson
66 COPY --from=rust /app/server/target/x86_64-unknown-linux-musl/debug/lemmy_server /app/lemmy
67 COPY --from=docs /app/docs/book/ /app/dist/documentation/
68 COPY --from=node /app/ui/dist /app/dist
69
70 RUN addgroup -g 1000 lemmy
71 RUN adduser -D -s /bin/sh -u 1000 -G lemmy lemmy
72 RUN chown lemmy:lemmy /app/lemmy
73 USER lemmy
74 EXPOSE 8536
75 CMD ["/app/lemmy"]