# Install the base requirements for the app. # This stage is to support development. ARG BUILDPLATFORM="linux/amd64" ARG TARGETPLATFORM="linux/amd64" FROM --platform=$BUILDPLATFORM python:alpine AS base ENV http_proxy http://proxy-chain.xxx.com:911/ ENV https_proxy http://proxy-chain.xxx.com:912/ WORKDIR /app COPY requirements.txt . RUN ping -c5 8.8.8.8 RUN ping -c5 208.67.222.222 RUN ifconfig RUN uname -a RUN cat /etc/resolv.conf RUN route RUN ip address RUN ip route RUN nslookup google.com RUN apk add --no-cache curl RUN curl -IL google.com RUN curl ifconfig.me RUN pip3 install --default-timeout=100 -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