Files
auth-mistox/Dockerfile
T
derek 1cfad5afa4
Docker Build and Release Upload / build (push) Successful in 1m22s
Create the certs if missing and run instead
2025-07-26 12:21:44 -07:00

79 lines
1.7 KiB
Docker
Executable File

######################
## Build Frontend ##
######################
FROM --platform=$BUILDPLATFORM node:alpine AS build-frontend
WORKDIR /src
# Define base address
ARG BASE_URL=/
# Install the angular CLI
RUN npm install -g @angular/cli
# Copy the package.json into this build step
COPY ./src/Client/package.json ./
# Pull dependencies
RUN npm install
# Copy the rest of the frontend over
COPY ./src/Client/ ./
# Compile the source
RUN ng build --base-href=${BASE_URL}
#####################
## Build Backend ##
#####################
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:9.0 AS build-backend
WORKDIR /src
# Copy the csproj
COPY ./src/Server/Server.csproj ./
# Restore the Server
RUN dotnet restore './Server.csproj'
# Copy the rest of the backend over
COPY ./src/Server/ ./
# Get the target arch
ARG TARGETARCH
# Build the source
RUN set -e && \
if [ "$TARGETARCH" = "arm64" ]; then RID="linux-arm64"; \
elif [ "$TARGETARCH" = "amd64" ]; then RID="linux-x64"; \
else echo "Unsupported ARCH: $TARGETARCH"; exit 1; \
fi && \
dotnet publish './Server.csproj' -c Release -r ${RID} -o /app/publish
################
## Publish ##
################
FROM mcr.microsoft.com/dotnet/aspnet:9.0
WORKDIR /app
ENV ASPNETCORE_HTTP_PORTS=5000
ENV StripeKey=null
ENV MySQLServer=null
ENV MySQLUser=null
ENV MySQLPass=null
ENV MySQLDatabase=Mistox
EXPOSE 5000
# Copy in the server
COPY --from=build-backend /app/publish ./
# Copy in the client
COPY --from=build-frontend /debug/wwwroot ./wwwroot/
# Copy in the entryscript and run
COPY docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod +x /docker-entrypoint.sh
ENTRYPOINT ["/docker-entrypoint.sh"]