- The Dockerfile in this repo is used to build a docker container with Jekyll 2.1.1, under rbenv (v2.4.1), with all the required gem files, to run the NSC webpages.
- A second rbenv (v2.4.0) is also installed and setup with Jekyll 3.4.2, and can be used to test code requiring a more current Jekyll.
- There is a script (compile.sh) which can be used if you want to generate html code for the webpage, without actually logging onto the container.
- There's also a Singularity recipe, to build a singularity container.
- The prebuilt container is also available on the Docker hub, and can be pulled down.
docker pull pchengi/nscjekyll
- You can also build the docker container yourself.
git clone https://github.com/snic-nsc/nscjekyllsetup.git
cd nscjekyllsetup
sudo docker build -t nscjekyll .
sudo docker run --rm -i -d -v <path to checked out nscweb repo>:/mnt -p 4000:4000 --name nscjekyll nscjekyll bash
- The above command starts the container, and mounts your checked out nscweb directory onto /mnt directory on the container; it also proxies port 4000 on the container onto your host machine.
- You can generate the html code for the files in the nscweb repo, without having to login into the container, using the compile.sh script on the container. It'll write the generated files to the _site directory, within your repo. It will output the compilation message(s) onto the terminal, and also return the exit code returned by jekyll, which can be used to test if the compilation was successful. Note that the
compile.sh
script takes an argument; ifnsc
is specified, it usesjekyll 2.1.1
, else it will use a more current version of Jekyll,jekyll 3.5.2
.
sudo docker exec -it nscjekyll bash /home/nscuser/compile.sh nsc
Configuration file: /home/nscuser/mnt/_config.yml
Source: /home/nscuser/mnt
Destination: /home/nscuser/mnt/_site
Generating...
done.
- In order to serve the file contents using Jekyll, simply do the following:
sudo docker exec -it nscjekyll bash
source rubyenv nsc
cd mnt
jekyll serve --watch
- At this point, if you don't see errors on the console, you should be able to point the browser on your host machine to localhost:4000 and view the pages.
- The singularity build recipe is found in the singularity directory, in this repo.
- To build:
cd singularity
sudo singularity build nscjekyll.simg Singularity
- To simply compile pages (such as via a script)
singularity exec --bind <checked-out nscweb directory>:/mnt nscjekyll.simg bash /usr/local/src/nscjekyllsetup/compile.sh nsc
- Run the jekyll web server, to serve pages, you could do one of the following:
singularity exec --bind <checked-out nscweb directory>:/mnt nscjekyll.simg bash
source /usr/local/src/nscjekyllsetup/rubyenv nsc
cd /mnt
jekyll serve --watch
or
singularity shell nscjekyll.simg
source /usr/local/src/nscjekyllsetup/rubyenv nsc
cd <checked-out nscweb directory>
jekyll serve --watch
- If you don't wish to build a singularity container from scratch, using the recipe, you can convert it from a prebuilt docker image.
- To do this, execute the build.sh script in docker-to-singularity folder, under `singularity'.