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