FROM docker.io/node:lts AS base
WORKDIR /app

# By copying only the package.json and package-lock.json here, we ensure that the following `-deps` steps are independent of the source code.
# Therefore, the `-deps` steps will be skipped if only the source code changes.
COPY package.json package-lock.json tsconfig.json astro.config.mjs ./

FROM base AS prod-deps
RUN npm install --omit=dev

FROM base AS build-deps
RUN npm install

FROM build-deps AS build

COPY . .

ARG REPO_VERSION_HASH
ARG BUILD_ENVIRONMENT
ARG PROJECT_VERSION

RUN echo "PUBLIC_REPO_VERSION_HASH=\"${REPO_VERSION_HASH}\" \n\
    PUBLIC_BUILD_ENVIRONMENT=\"${BUILD_ENVIRONMENT}\" \n\
    PUBLIC_PROJECT_VERSION=\"${PROJECT_VERSION}\"" >> .env
RUN npm run build

FROM httpd:latest AS runtime
WORKDIR /usr/local/apache2/htdocs

RUN rm index.html

COPY --from=build /app/dist .

EXPOSE 80