Skip to content

Docker images of University of Waterloo Linux Servers

License

Notifications You must be signed in to change notification settings

adrw/docker-uwaterloo

Repository files navigation

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.

  • full image includes 97.79% of the apt-get packages on UW servers.
  • thin image includes 32.32% of the apt-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.

Quick Start

  1. Install Docker
  2. Pull latest image
    • $ docker pull andrewparadi/uwaterloo:latest
  3. 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

  1. Derive your own ALL.apps packages list on UW Linux server
    • $ apt-get list --installed > ALL.apps
  2. Clone this repo
  3. In the repo, create derivative collections and generate all Dockerfiles
    • $ make build_file
  4. Build a specific image by tag (this command includes build_file)
    • $ make build TAG={tag}
  5. 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.

  1. 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}
  2. In the Docker container, test that the new package installs
    • $ apt-get install {new package}
  3. If it installs, then add it to ALL.apps
  4. 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.

  1. Add a new collection of packages derived from a parent one in build_dockerfile.sh
  2. Add to list of tags, and add any required code to generate {tag}/IN.apps collection in build_dockerfile.sh
  3. Add new rows to README.md Images and Collections tables
  4. Test building your new tagged image with $ make build TAG={tag}
  5. 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:

  1. Fork this repo to your personal GitHub account
  2. Create a feature branch based on the latest version of Master
  3. Commit your changes
  4. 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
  5. Create a Pull Request into Master

Other

About

Docker images of University of Waterloo Linux Servers

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published