30 lines
875 B
Docker
30 lines
875 B
Docker
# syntax=docker/dockerfile:1
|
|
|
|
# Stage 1: Base image.
|
|
## Start with a base image containing NodeJS so we can build Docusaurus.
|
|
FROM node:18-alpine3.18 as base
|
|
## Disable colour output from yarn to make logs easier to read.
|
|
ENV FORCE_COLOR=0
|
|
## Enable corepack.
|
|
RUN corepack enable
|
|
## Set the working directory to `/opt/docusaurus`.
|
|
WORKDIR /opt/docusaurus
|
|
|
|
# Stage 2b: Production build mode.
|
|
FROM base as prod
|
|
## Set the working directory to `/opt/docusaurus`.
|
|
WORKDIR /opt/docusaurus
|
|
## Copy over the source code.
|
|
COPY . /opt/docusaurus/
|
|
## Install dependencies with `--immutable` to ensure reproducibility.
|
|
RUN yarn install
|
|
## Build the static site.
|
|
RUN yarn build
|
|
|
|
# Stage 3a: Serve with `docusaurus serve`.
|
|
FROM prod as serve
|
|
## Expose the port that Docusaurus will run on.
|
|
EXPOSE 3000
|
|
## Run the production server.
|
|
CMD ["yarn", "serve", "--host", "0.0.0.0", "--no-open"]
|