adrw/docker-uwaterloo
Docker images of University of Waterloo Linux Servers
Docker Images of University of Waterloo Linux Servers
...because sometimes you want to finish your CS assignments on your own computer
Docker image that replicates University of Waterloo Linux server build environment.
fullimage includes 97.79% of theapt-getpackages on UW servers.thinimage includes 32.32% of theapt-getpackages on UW servers, not including packages likely unnecessary to use as a build / compile / run container.- Near identical build environment image allows for less discrepancy between your local work environment and the server test environment.
Quick Start
- Install Docker
- Pull latest image
$ docker pull andrewparadi/uwaterloo:latest
- Mount your assignment code and run the image
$ docker run -it -v {local dir}:/src --entrypoint /bin/bash -w /src andrewparadi/uwaterloo:latest
Images
$ docker pull andrewparadi/uwaterloo:{TAG}
$ docker run -it -v {local dir}:/src --entrypoint /bin/bash -w /src andrewparadi/uwaterloo:{TAG}
| Tags | Collection | # Packages | Image Size | Description |
|---|---|---|---|---|
latest |
INSTALL.apps | 1366 | 11 GB | default recommended, equivalent to thin |
thin |
INSTALL.apps | 1366 | 11 GB | strips out GUI apps, fonts, latex, windowing utilities... for smaller image size |
full |
PASS.apps | 4133 | 16 GB | all packages on UW Linux server that successfully install in Docker |
gcc |
GCC.apps | 4 | 350 MB | Super thin image for compiling C/C++ |
Collections
Lists of packages on UW Linux servers used to build Dockerfiles for the above tagged images.
| Collection | Parent Collection | # Packages | Updated | Description |
|---|---|---|---|---|
| ALL.apps | 4226 | Feb 13, 2018 | raw output from apt-get list --installed on UW Linux servers |
|
| PASS.apps | ALL.apps | 4133 | Feb 16, 2018 | UW packages that succesfully install in the full Docker image |
| FAIL.apps | ALL.apps | 93 | Feb 16, 2018 | UW packages that fail install in the full Docker image |
| INSTALL.apps | PASS.apps | 1366 | Feb 16, 2018 | Thin build environment. Packages that are not in IGNORE.apps |
| IGNORE.apps | PASS.apps | 2767 | Feb 16, 2018 | Packages ignored to minimize image size |
Build Images Yourself
- Derive your own ALL.apps packages list on UW Linux server
$ apt-get list --installed > ALL.apps
- Clone this repo
- In the repo, create derivative collections and generate all Dockerfiles
$ make build_file
- Build a specific image by tag (this command includes
build_file)$ make build TAG={tag}
- Run including your local code directory
$ docker run -it -v {local dir}:/src --entrypoint /bin/bash -w /src andrewparadi/uwaterloo:{tag}
Contributions
Add an issue: If your build requirements that you use on UW Linux aren't in this Docker image yet, please add an issue.
Add a single package: If you're simply adding an apt-get package, use the following steps.
- Run the current image that you want to add a package to
$ docker run -it -v {local dir}:/src --entrypoint /bin/bash -w /src andrewparadi/uwaterloo:{tag}
- In the Docker container, test that the new package installs
$ apt-get install {new package}
- If it installs, then add it to
ALL.apps - Following the GitHub Flow Guidelines below, submit a Pull Request
Note: You do not have to build the image locally prior to Pull Request. full and thin tags take ~8-17 hours to build but Docker Hub will automatically rebuild when your code is committed. Any failures in that process can be rolled back at that point.
Contribute a new image: If there's a class specific stack that you'd like to add, follow the contribution guidelines before and do the following steps as well to create a new tagged image.
- Add a new collection of packages derived from a parent one in build_dockerfile.sh
- Add to list of
tags, and add any required code to generate{tag}/IN.appscollection in build_dockerfile.sh - Add new rows to README.md Images and Collections tables
- Test building your new tagged image with
$ make build TAG={tag} - When your code is merged in, a new trigger will be added to Docker Hub to enable automatic builds for your new image
GitHub Flow Guidelines: Any help to fix bugs or keep packages up to date is appreciated. Please follow the GitHub Flow approach to team development:
- Fork this repo to your personal GitHub account
- Create a feature branch based on the latest version of
Master - Commit your changes
- Rebase your commits into a single commit with
[CLOSES #{}]as the start of the commit message if it closes a specific issue- Example commit message:
[CLOSES #14] Add package zsh-autocomplete
- Example commit message:
- Create a Pull Request into Master
Other
- Released under GNU GPLv3 Licence.
- Docker Hub
- Source Code