Gatsby is a popular and powerful static site generator based on React. It provides a lot of best pratices out of the box to generate fast site with React and GraphQL for a lot use cases.
Docker provides an excellent way to package your application with its dependencies. It provides a nice isolation for different tools/frameworks for local development so that avoids the possible conflicts between different tools or versions.
Dockerize Gatsby Cli
We are going to using alpine as a base image to host Gatsby Cli.
FROM node:10.16.3-alpine
EXPOSE 8000
RUN apk update && apk upgrade && \
apk add --no-cache fftw-dev gcc g++ make libc6-compat && \
apk add --no-cache python && \
apk add --update --no-cache --repository http://dl-3.alpinelinux.org/alpine/edge/community --repository http://dl-3.alpinelinux.org/alpine/edge/main vips-dev &&\
apk add --no-cache bash git yarn openssh &&\
npm install --global gatsby --no-optional gatsby-cli &&\
rm -rf /var/cache/apk/*
WORKDIR /site
ENTRYPOINT [ "gatsby" ]
Let build the image
docker build -t zhangxd6/gatsbycli .
you can pull the image from my docker hub repository too
docker pull zhangxd6/gatsbycli
Use the image
Let's create new site
docker run -ti --rm -v $(pwd):/site gatsbycli new demo
it will create the site demo to the folder. Let change the foler to demo
cd demo
Now let start the dev of site
docker run -it --rm -v $(pwd):/site -p 8000:8000 gatsbycli develop -H 0.0.0.0
Note: the '-H 0.0.0.0' is necessary to be able to access the site running inside container through local port '8000'
Enjoy Coding.