anchor.diff:  # from the master branch of https://github.com/docker/docker.github.io
   #
   # Here is the sequence:
  -# 1.  Set up the build
  -# 2.  Fetch upstream resources
  -# 3.  Build static HTML from master
  -# 4.  Reset to clean tiny nginx image
  -# 5.  Copy Nginx config and archive HTML, which don't change often and can be cached
  -# 6.  Copy static HTML from previous build stage (step 3)
  +# 1.  Set up base stages for building and deploying
  +# 2.  Collect and build the archived documentation
  +# 3.  Collect and build the reference documentation (from upstream resources)
  +# 4.  Build static HTML from the current branch
  +# 5.  Build the final image, combining the archives, reference docs, and
  +#     current version of the documentation
   #
   # When the image is run, it starts Nginx and serves the docs at port 4000
  +
   
   # Engine
   ARG ENGINE_BRANCH="18.09.x"
  
positive.code: ENV DISTRIBUTION_BRANCH=${DISTRIBUTION_BRANCH}
  ENV DISTRIBUTION_SVN_BRANCH=branches/${DISTRIBUTION_BRANCH}
  
  # Get the current docs from the checked out branch
  COPY . .
  
  ####### START UPSTREAM RESOURCES ########
  # Fetch upstream resources
  RUN bash ./_scripts/fetch-upstream-resources.sh .
  ####### END UPSTREAM RESOURCES ########
  
  
  # Build the static HTML, now that everything is in place
  
  RUN jekyll build -d ${TARGET}
  
  # Fix up some links, don't touch the archives
  RUN find ${TARGET} -type f -name '*.html' | grep -vE "v[0-9]+\." | while read i; do sed -i 's#href="https://docs.docker.com/#href="/#g' "$i"; done
  
  # BUILD OF MASTER DOCS IS NOW DONE!
  
  # Reset to alpine so we don't get any docs source or extra apps
  FROM nginx:alpine
  
  # Set the target again
  ENV TARGET=/usr/share/nginx/html
  
  # Get the nginx config from the nginx-onbuild image
  # This hardly ever changes so should usually be cached
  COPY --from=docs/docker.github.io:nginx-onbuild /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf
  
  # Get all the archive static HTML and put it into place
  # Go oldest-to-newest to take advantage of the fact that we change older
  # archives less often than new ones.
  # To add a new archive, add it here
  # AND ALSO edit _data/docsarchives/archives.yaml to add it to the drop-down
  COPY --from=docs/docker.github.io:v17.03 ${TARGET} ${TARGET}
  COPY --from=docs/docker.github.io:v17.06 ${TARGET} ${TARGET}
  COPY --from=docs/docker.github.io:v17.09 ${TARGET} ${TARGET}
  COPY --from=docs/docker.github.io:v17.12 ${TARGET} ${TARGET}
  COPY --from=docs/docker.github.io:v18.03 ${TARGET} ${TARGET}
  
  # Get the built docs output from the previous build stage
  # This ordering means all previous layers can come from cache unless an archive
  # changes
  
  COPY --from=builder ${TARGET} ${TARGET}
  
  # Serve the site (target), which is now all static HTML
  CMD echo -e "Docker docs are viewable at:\nhttp://0.0.0.0:4000"; exec nginx -g 'daemon off;'
  
negative.code: # Distribution
  ARG DISTRIBUTION_BRANCH="release/2.6"
  
  
  ###
  # Set up base stages for building and deploying
  ###
  
  # Get basic configs and Jekyll env
  FROM docs/docker.github.io:docs-builder AS builderbase
  ENV TARGET=/usr/share/nginx/html
  WORKDIR /usr/src/app/md_source/
  
  