mirror of https://github.com/docker/docs.git
				
				
				
			
		
			
				
	
	
		
			103 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Docker
		
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Docker
		
	
	
	
| # This Dockerfile builds the docs for https://docs.docker.com/
 | |
| # from the master branch of https://github.com/docker/docker.github.io
 | |
| #
 | |
| # Here is the sequence:
 | |
| # 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="19.03.x"
 | |
| 
 | |
| # 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/
 | |
| 
 | |
| # Set vars used by fetch-upstream-resources.sh script
 | |
| # Branch to pull from, per ref doc. To get master from svn the svn branch needs
 | |
| # to be 'trunk'. To get a branch from svn it needs to be 'branches/branchname'
 | |
| ARG ENGINE_BRANCH
 | |
| ENV ENGINE_BRANCH=${ENGINE_BRANCH}
 | |
| ENV ENGINE_SVN_BRANCH=branches/${ENGINE_BRANCH}
 | |
| 
 | |
| ARG DISTRIBUTION_BRANCH
 | |
| ENV DISTRIBUTION_BRANCH=${DISTRIBUTION_BRANCH}
 | |
| ENV DISTRIBUTION_SVN_BRANCH=branches/${DISTRIBUTION_BRANCH}
 | |
| 
 | |
| 
 | |
| # Reset to alpine so we don't get any docs source or extra apps
 | |
| FROM nginx:alpine AS deploybase
 | |
| 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
 | |
| 
 | |
| # Set the default command to serve the static HTML site
 | |
| CMD echo -e "Docker docs are viewable at:\nhttp://0.0.0.0:4000"; exec nginx -g 'daemon off;'
 | |
| 
 | |
| 
 | |
| # Build the archived docs
 | |
| # these docs barely change, so can be cached
 | |
| FROM deploybase AS archives
 | |
| # Get all the archive static HTML and put it into place. 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}
 | |
| 
 | |
| # Fetch library samples (documentation from official images on Docker Hub)
 | |
| # Only add the files that are needed to build these reference docs, so that
 | |
| # these docs are only rebuilt if changes were made to the configuration.
 | |
| # @todo find a way to build HTML in this stage, and still have them included in the navigation tree
 | |
| FROM builderbase AS library-samples
 | |
| COPY ./_scripts/fetch-library-samples.sh ./_scripts/
 | |
| COPY ./_samples/boilerplate.txt ./_samples/
 | |
| RUN bash ./_scripts/fetch-library-samples.sh
 | |
| 
 | |
| # Fetch upstream resources (reference documentation)
 | |
| # Only add the files that are needed to build these reference docs, so that
 | |
| # these docs are only rebuilt if changes were made to the configuration.
 | |
| FROM builderbase AS upstream-resources
 | |
| COPY ./_scripts/fetch-upstream-resources.sh ./_scripts/
 | |
| COPY ./_config.yml .
 | |
| COPY ./_data/toc.yaml ./_data/
 | |
| RUN bash ./_scripts/fetch-upstream-resources.sh .
 | |
| 
 | |
| 
 | |
| # Build the current docs from the checked out branch
 | |
| FROM builderbase AS current
 | |
| COPY . .
 | |
| COPY --from=library-samples /usr/src/app/md_source/. ./
 | |
| COPY --from=upstream-resources /usr/src/app/md_source/. ./
 | |
| 
 | |
| # 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
 | |
| 
 | |
| 
 | |
| # Docs with archives (for deploy)
 | |
| FROM archives AS deploy
 | |
| 
 | |
| # Add the current version of the docs
 | |
| COPY --from=current ${TARGET} ${TARGET}
 |