Files
docker-docs/Dockerfile
Sebastiaan van Stijn 721f9d2aba Optimize Dockerfile
This optimizes the Dockerfile a bit by;

- putting the docs archives at the top to
  optimize caching and to prevent having
  to clone the github repository on each
  build. Note that '--no-cache' is needed
  to forcefully break the cache, but the
  archives should not frequently change
- grouping RUN lines to reduce image size.
- using a loop for the archived versions to
  reduce the amount of duplicated code.
- using the local files for the *current*
  version of the docs instead of the git
  clone from GitHub. this makes it also
  use the right source instead of "master"
- adding a .dockerignore to prevent busting
  the cache if not needed, and to prevent
  uploading the '.git' repository, which
  is not used for the "current" docs

Difference in size before/after;

    REPOSITORY     TAG     IMAGE ID      CREATED         SIZE
    docs           latest  36f6ad029e6a  3 minutes ago   1.722 GB
    docs-orig      latest  4f1a3e3fda4f  16 minutes ago  3.344 GB

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2016-11-22 00:20:02 +01:00

29 lines
1.4 KiB
Docker

FROM starefossen/github-pages
ENV VERSIONS="v1.4 v1.5 v1.6 v1.7 v1.8 v1.9 v1.10 v1.11"
# Create archive; check out each version, create HTML, tweak links
RUN git clone https://www.github.com/docker/docker.github.io temp; \
for VER in $VERSIONS; do \
git --git-dir=./temp/.git --work-tree=./temp checkout ${VER} \
&& mkdir -p allvbuild/${VER} \
&& jekyll build -s temp -d allvbuild/${VER} \
&& find allvbuild/${VER} -type f -name '*.html' -print0 | xargs -0 sed -i 's#href="/#href="/'"$VER"'/#g' \
&& find allvbuild/${VER} -type f -name '*.html' -print0 | xargs -0 sed -i 's#src="/#src="/'"$VER"'/#g' \
&& find allvbuild/${VER} -type f -name '*.html' -print0 | xargs -0 sed -i 's#href="https://docs.docker.com/#href="/'"$VER"'/#g'; \
done; \
rm -rf temp
COPY . allv
# Get docker/docker ref docs from 1.12.x branch to be used in master builds
# Uses Github Subversion gateway to limit the checkout
RUN svn co https://github.com/docker/docker/branches/1.12.x/docs/reference allv/engine/reference \
&& svn co https://github.com/docker/docker/branches/1.12.x/docs/extend allv/engine/extend \
&& wget -O allv/engine/deprecated.md https://raw.githubusercontent.com/docker/docker/1.12.x/docs/deprecated.md \
&& jekyll build -s allv -d allvbuild \
&& rm -rf allv
# Serve the site, which is now all static HTML
CMD jekyll serve -s /usr/src/app/allvbuild -d /_site --no-watch -H 0.0.0.0 -P 4000