...because sometimes you want to finish your CS assignments on your own computer
Docker image that replicates University of Waterloo Linux server build environment.
full
image includes 97.79% of theapt-get
packages on UW servers.thin
image includes 32.32% of theapt-get
packages 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.
- 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
$ 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++ |
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 |
- 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}
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.apps
collection 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
- Released under GNU GPLv3 Licence.
- Docker Hub
- Source Code