Spaces:
Sleeping
Sleeping
# Install the base requirements for the app. | |
# This stage is to support development. | |
FROM --platform=$BUILDPLATFORM python:alpine AS base | |
WORKDIR /app | |
COPY requirements.txt . | |
RUN pip install -r requirements.txt | |
FROM --platform=$BUILDPLATFORM node:18-alpine AS app-base | |
WORKDIR /app | |
COPY app/package.json app/yarn.lock ./ | |
COPY app/spec ./spec | |
COPY app/src ./src | |
# Run tests to validate app | |
FROM app-base AS test | |
RUN yarn install | |
RUN yarn test | |
# Clear out the node_modules and create the zip | |
FROM app-base AS app-zip-creator | |
COPY --from=test /app/package.json /app/yarn.lock ./ | |
COPY app/spec ./spec | |
COPY app/src ./src | |
RUN apk add zip && \ | |
zip -r /app.zip /app | |
# Dev-ready container - actual files will be mounted in | |
FROM --platform=$BUILDPLATFORM base AS dev | |
CMD ["mkdocs", "serve", "-a", "0.0.0.0:8000"] | |
# Do the actual build of the mkdocs site | |
FROM --platform=$BUILDPLATFORM base AS build | |
COPY . . | |
RUN mkdocs build | |
# Extract the static content from the build | |
# and use a nginx image to serve the content | |
FROM --platform=$TARGETPLATFORM nginx:alpine | |
COPY --from=app-zip-creator /app.zip /usr/share/nginx/html/assets/app.zip | |
COPY --from=build /app/site /usr/share/nginx/html | |