29 lines
876 B
Docker
29 lines
876 B
Docker
![]() |
# syntax=docker/dockerfile:1
|
||
|
|
||
|
# Stage 1: Base image.
|
||
|
## Start with a base image containing NodeJS so we can build Docusaurus.
|
||
|
FROM node:lts 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 --immutable
|
||
|
## 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"]
|