From 541cdd0b57e49fde1d36f903a1fbd07328fbb7f3 Mon Sep 17 00:00:00 2001 From: Amatsugu Date: Sun, 18 May 2025 14:06:11 -0400 Subject: [PATCH] Complete Docker Build --- AobaServer/.dockerignore | 1 + AobaServer/AobaServer.csproj | 3 --- AobaServer/Dockerfile | 40 +++++++++++++++++++++++++++++++----- docker-compose.yml | 13 ++++++------ 4 files changed, 42 insertions(+), 15 deletions(-) create mode 100644 AobaServer/.dockerignore diff --git a/AobaServer/.dockerignore b/AobaServer/.dockerignore new file mode 100644 index 0000000..701678b --- /dev/null +++ b/AobaServer/.dockerignore @@ -0,0 +1 @@ +wwwroot diff --git a/AobaServer/AobaServer.csproj b/AobaServer/AobaServer.csproj index 54659d7..2de3dd8 100644 --- a/AobaServer/AobaServer.csproj +++ b/AobaServer/AobaServer.csproj @@ -41,7 +41,4 @@ - - - diff --git a/AobaServer/Dockerfile b/AobaServer/Dockerfile index 9f5b8f2..f407b4d 100644 --- a/AobaServer/Dockerfile +++ b/AobaServer/Dockerfile @@ -1,12 +1,40 @@ -# See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging. +# Client Side build - prep deps +FROM rust:1 AS chef +RUN rustup target add wasm32-unknown-unknown +RUN cargo install cargo-chef +WORKDIR /app +FROM chef AS planner +COPY . . +WORKDIR /app/AobaClient +RUN cargo chef prepare --recipe-path recipe.json + +FROM chef AS client-builder +WORKDIR /app/AobaClient +COPY --from=planner /app/AobaClient/recipe.json recipe.json +RUN cargo chef cook --release --recipe-path recipe.json +COPY /AobaClient /app/AobaClient +COPY /AobaServer/Proto /app/AobaServer/Proto + +# Install Protobuf +RUN apt update +RUN apt install -y protobuf-compiler libprotobuf-dev + +# Install `dx` +RUN curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash +RUN cargo binstall dioxus-cli --root /.cargo -y --force +ENV PATH="/.cargo/bin:$PATH" + +# Create the final bundle folder. Bundle always executes in release mode with optimizations enabled +RUN dx bundle --platform web + +# Server Build # This stage is used when running from VS in fast mode (Default for Debug configuration) FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base USER $APP_UID WORKDIR /app -EXPOSE 8614 -EXPOSE 8615 - +EXPOSE 8080 +EXPOSE 8081 # This stage is used to build the service project FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build @@ -15,6 +43,8 @@ WORKDIR /src COPY ["AobaServer/AobaServer.csproj", "AobaServer/"] RUN dotnet restore "./AobaServer/AobaServer.csproj" COPY . . +# Copy Built bundle from client builder +COPY --from=client-builder /app/AobaClient/target/dx/aoba-client/release/web/public /src/AobaServer/wwwroot WORKDIR "/src/AobaServer" RUN dotnet build "./AobaServer.csproj" -c $BUILD_CONFIGURATION -o /app/build @@ -27,4 +57,4 @@ RUN dotnet publish "./AobaServer.csproj" -c $BUILD_CONFIGURATION -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . -ENTRYPOINT ["dotnet", "AobaServer.dll"] \ No newline at end of file +ENTRYPOINT ["dotnet", "AobaServer.dll"] diff --git a/docker-compose.yml b/docker-compose.yml index fc152f6..321bd62 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,10 +1,9 @@ services: - client: - build: - context: . - dockerfile: AobaClient/Dockerfile - # server: + # client: # build: # context: . - # dockerfile: AobaServer/Dockerfile - \ No newline at end of file + # dockerfile: AobaClient/Dockerfile + server: + build: + context: . + dockerfile: AobaServer/Dockerfile