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 | |