diff --git a/.dockerignore b/.dockerignore index fa3945f..fa5cb4c 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,3 +1,6 @@ /deployments -/target +/server/target +/client/node_modules +/client/package.json +/client/package-lock.json /.git diff --git a/client/img/atlas.png.bak b/client/img/atlas.png.bak deleted file mode 100644 index 3cb5dfc..0000000 Binary files a/client/img/atlas.png.bak and /dev/null differ diff --git a/deployments/docker/Dockerfile b/deployments/docker/Dockerfile index 0565b6b..b189e13 100644 --- a/deployments/docker/Dockerfile +++ b/deployments/docker/Dockerfile @@ -1,16 +1,23 @@ -FROM rust:alpine AS builder +FROM rust:alpine AS builder-rs -COPY Cargo.toml Cargo.lock /app/ -COPY src /app/src +COPY server/Cargo.toml server/Cargo.lock /app/ +COPY server/src /app/src WORKDIR /app RUN apk add musl-dev RUN cargo build --release +FROM node:alpine AS builder-ts +COPY client /app/ +WORKDIR /app +RUN npm install typescript +RUN npx tsc + FROM alpine RUN apk add --no-cache tini - RUN adduser -DH block USER block -COPY --from=builder /app/target/release/rollback /rollback -COPY client /client +COPY --from=builder-rs /app/target/release/rollback /rollback +COPY --from=builder-ts /app /client + +ENV CLIENT_DIR=/client ENTRYPOINT ["/sbin/tini", "--", "/rollback"] diff --git a/server/src/routes.rs b/server/src/routes.rs index a8c96a3..ca55c8f 100644 --- a/server/src/routes.rs +++ b/server/src/routes.rs @@ -11,12 +11,15 @@ use super::rooms; pub fn routes() -> Router { let room_server: rooms::RoomService = rooms::start_room_server(); - + + let client_dir = std::env::var("CLIENT_DIR").unwrap_or_else(|_| String::from("./client")); + println!("Service client data from: {client_dir}"); + Router::new() .route("/api/check", get(|| async {"ok"})) .route("/api/exists/:code", get(game_exists)) .route("/api/join/:code", get(game_join)) - .nest_service("/", ServeDir::new("../client")) + .nest_service("/", ServeDir::new(client_dir)) .layer(Extension(room_server)) }