Consolidate docs project dockerfiles/images
Problem
The docs project uses many docker images that are used for:
- Building and deploying the docs site.
- Generating review apps.
- Building the docs linting tools used in other projects.
The complicated relationships between these images make them hard to maintain, and very fragile when we want to update them. The process to deploy the updated version of the docs site frequently breaks due to a problem in the docker images. To make the release project more stable, we need to:
- Simplify the docker images, and reduce the number of images we use.
- Make them easier to maintain through the simplification, but also improved documentation.
Proposal
Dockerfile relationships
Current:
graph TD
U{alpine:3.15} --> I[docs-lint-markdown]
Y{nginx:alpine} --> E[Single] & J[nginx.onbuild]
V{ruby:2.7.5-alpine3.15} --> A[Base] & E[Single] & H[docs-lint-html]
Z{golang:1.13-alpine} --> F[bootstrap] & E[Single]
A[Base] --> F[bootstrap]
F[bootstrap] --> C[builder.onbuild] & E[Single]
X{nginx:stable-alpine} --> G[archives]
Proposed:
graph TD
U{alpine:3.16} --> I[docs-lint-markdown]
V{ruby:2.7.5-alpine3.16} --> A[Base]
A[Base] --> H[docs-lint-html] & E[Single]
Y{nginx:alpine} --> E[Single] & G[archives]
Dependencies:
Current:
Dependencies | base |
single |
lint-html |
lint-markdown |
Universally required |
---|---|---|---|---|---|
bash |
|||||
build-base |
|||||
curl |
|||||
gcompat |
|||||
git |
|||||
gnupg |
|||||
go |
|||||
grep |
|||||
gzip |
|||||
jq |
|||||
libc6-compat |
|||||
libcurl |
|||||
libxslt-dev |
|||||
libxslt |
|||||
nodejs |
|||||
openssl |
|||||
parallel |
|||||
pngquant |
|||||
ruby-dev |
|||||
tar |
|||||
xz-dev |
|||||
xz |
|||||
yarn |
Proposed:
-
base
: Same as before, but skipgo
and use prebuiltminify
instead. -
Single
: Frombase
. -
docs-lint-html
: From base, then addparallel
-
docs-lint-markdown
: Standalone, same as before.
Edited by Marcel Amirault