util/docker/doc.coreboot.org/Dockerfile: Use alpine:3.8, Sphinx 1.7

With Alpine base, use pip to install Sphinx 1.7 and Sphinx-autobuild
Alpine, a 4.5MB base, is used over Debian Stable, 101MB, to cut down the
total size of the docker image.

Change-Id: I53f246206458b1de34cd7f3a42481b91ca285ff0
Signed-off-by: Tom Hiller <thrilleratplay@gmail.com>
Reviewed-on: https://review.coreboot.org/28211
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
This commit is contained in:
Tom Hiller 2018-08-18 19:39:55 -04:00 committed by Patrick Georgi
parent 651b11be2d
commit fcca617eaf
3 changed files with 64 additions and 6 deletions

View File

@ -1,5 +1,22 @@
FROM debian:stable FROM alpine:3.8
RUN apt-get update && apt-get install -y make python-sphinx python-recommonmark python-sphinx-rtd-theme git && apt-get clean
USER nobody COPY makeSphinx.sh /makeSphinx.sh
RUN apk add --no-cache python3 make bash git \
&& pip3 install --upgrade --no-cache-dir pip \
&& pip3 install --no-cache-dir \
sphinx===1.7.7 \
sphinx_rtd_theme===0.4.1 \
recommonmark===0.4.0 \
sphinx_autobuild===0.7.1 \
&& chmod 755 /makeSphinx.sh
VOLUME /data-in /data-out VOLUME /data-in /data-out
ENTRYPOINT bash -c "cd /data-in/Documentation && make sphinx BUILDDIR=/tmp/build && rm -rf /data-out/* && mv /tmp/build/html/* /data-out/"
# For Sphinx-autobuild
# Port 8000 - HTTP server
# Port 35729 - websockets connection to allow automatic browser reloads after each build
EXPOSE 8000 35729
ENTRYPOINT ["/bin/bash", "/makeSphinx.sh"]
CMD []

View File

@ -1,3 +1,32 @@
How to use: # doc.coreboot.org
Docker container for generating and developing documentation for doc.coreboot.org
docker run --rm -v $path-to-coreboot.git:/data-in:ro -v $path-to-html-output:/data-out $image **NOTE**: All paths are from the base of the coreboot git repo.
### Build
```sh
docker build --force-rm -t "doc.coreboot.org" "$PWD/util/docker/doc.coreboot.org/"
```
### Generating production HTML
```sh
# To ensure the output directory is given the correct permissions, make sure to
# created it before running docker the first time.
mkdir -p "$PWD/Documentation/_build/"
docker run -it --rm \
--user "$(id -u):$(id -g)" \
-v "$PWD/:/data-in/:ro" \
-v "$PWD/Documentation/_build/:/data-out/" \
doc.coreboot.org
```
### live reloaded with web server
On the host machine, open a browser to the address http://0.0.0.0:8000
```sh
docker run -it --rm \
--net=host -v "$PWD/:/data-in/:ro" \
doc.coreboot.org livehtml
```

View File

@ -0,0 +1,12 @@
#!/bin/bash
if [ "$1" == "livehtml" ]; then
echo "Starting live documentation build"
cd /data-in/Documentation && make livesphinx BUILDDIR=/tmp/build
else
echo "Starting production documentation build"
cd /data-in/Documentation \
&& make sphinx BUILDDIR=/tmp/build \
&& rm -rf /data-out/* \
&& mv /tmp/build/html/* /data-out/
fi