about summary refs log tree commit diff
path: root/Dockerfile
diff options
context:
space:
mode:
Diffstat (limited to 'Dockerfile')
-rw-r--r--Dockerfile34
1 files changed, 23 insertions, 11 deletions
diff --git a/Dockerfile b/Dockerfile
index b9a177a..e003845 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,14 +1,26 @@
-FROM ekidd/rust-musl-builder:latest AS rust
-ADD --chown=rust:rust . ./
+FROM ekidd/rust-musl-builder:latest AS server-cache
+WORKDIR /server
+COPY server/Cargo.* ./
+RUN sudo mkdir src
+RUN echo "fn main() {}" | sudo dd of=src/main.rs
+RUN sudo chown rust:rust .
 RUN cargo build --release
+RUN rm -f target/x86_64-unknown-linux-musl/release/deps/shorest*
 
-FROM node:alpine
-RUN apk --no-cache add ca-certificates
-COPY --from=rust \
-    /home/rust/ \
-    /main
-WORKDIR /main/src
-RUN cd ./client && yarn install && yarn build;
-RUN mv ./target/x86_64-unknown-linux-musl/release/shorest ./shorest
-CMD ./shorest
+FROM node:alpine as client
+WORKDIR /client
+COPY client/package*.json ./
+RUN yarn install
+COPY client ./
+RUN yarn build
+
+FROM server-cache as server
+WORKDIR /server
+COPY server/src src
+RUN cargo build --release
 
+FROM alpine:latest
+WORKDIR /shorest
+COPY --from=client /client/build client/
+COPY --from=server /server/target/x86_64-unknown-linux-musl/release/shorest shorest
+CMD ./shorest