https://github.com/adrw/docker-uwaterloo
Docker images of University of Waterloo Linux Servers
https://github.com/adrw/docker-uwaterloo
docker docker-image uwaterloo waterloo
Last synced: 4 months ago
JSON representation
Docker images of University of Waterloo Linux Servers
- Host: GitHub
- URL: https://github.com/adrw/docker-uwaterloo
- Owner: adrw
- License: gpl-3.0
- Created: 2018-02-10T17:15:14.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2020-12-09T16:48:10.000Z (over 5 years ago)
- Last Synced: 2025-10-04T18:54:45.040Z (8 months ago)
- Topics: docker, docker-image, uwaterloo, waterloo
- Language: Dockerfile
- Homepage:
- Size: 99.6 KB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
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](https://docs.docker.com/install/)
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](https://github.com/andrewparadi/docker-uwaterloo/tree/master/collections/INSTALL.apps)|1366|11 GB| default recommended, equivalent to `thin`|
|`thin`|[INSTALL.apps](https://github.com/andrewparadi/docker-uwaterloo/tree/master/collections/INSTALL.apps)|1366|11 GB| strips out GUI apps, fonts, latex, windowing utilities... for smaller image size |
|`full`|[PASS.apps](https://github.com/andrewparadi/docker-uwaterloo/tree/master/collections/PASS.apps)|4133|16 GB| all packages on UW Linux server that successfully install in Docker |
|`gcc`|[GCC.apps](https://github.com/andrewparadi/docker-uwaterloo/tree/master/collections/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](https://github.com/andrewparadi/docker-uwaterloo/tree/master/collections/ALL.apps)| | 4226 | Feb 13, 2018 | raw output from `apt-get list --installed` on UW Linux servers |
|[PASS.apps](https://github.com/andrewparadi/docker-uwaterloo/tree/master/collections/PASS.apps)|[ALL.apps](https://github.com/andrewparadi/docker-uwaterloo/tree/master/collections/ALL.apps)| 4133 | Feb 16, 2018 | UW packages that succesfully install in the `full` Docker image |
|[FAIL.apps](https://github.com/andrewparadi/docker-uwaterloo/tree/master/collections/FAIL.apps)| [ALL.apps](https://github.com/andrewparadi/docker-uwaterloo/tree/master/collections/ALL.apps)| 93 | Feb 16, 2018 | UW packages that fail install in the `full` Docker image |
|[INSTALL.apps](https://github.com/andrewparadi/docker-uwaterloo/tree/master/collections/INSTALL.apps)|[PASS.apps](https://github.com/andrewparadi/docker-uwaterloo/tree/master/collections/PASS.apps)| 1366 | Feb 16, 2018| Thin build environment. Packages that are not in [IGNORE.apps](https://github.com/andrewparadi/docker-uwaterloo/tree/master/collections/IGNORE.apps) |
|[IGNORE.apps](https://github.com/andrewparadi/docker-uwaterloo/tree/master/collections/IGNORE.apps) | [PASS.apps](https://github.com/andrewparadi/docker-uwaterloo/tree/master/collections/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](https://hub.docker.com/r/andrewparadi/uwaterloo/) 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](https://github.com/andrewparadi/docker-uwaterloo/tree/master/build_dockerfile.sh)
2. Add to list of `tags`, and add any required code to generate `{tag}/IN.apps` collection in [build_dockerfile.sh](https://github.com/andrewparadi/docker-uwaterloo/tree/master/build_dockerfile.sh)
3. Add new rows to [README.md](https://github.com/andrewparadi/docker-uwaterloo/tree/master/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](https://hub.docker.com/r/andrewparadi/uwaterloo/) 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](https://guides.github.com/introduction/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
---
- Released under GNU GPLv3 Licence.
- [Docker Hub](https://hub.docker.com/r/andrewparadi/uwaterloo/)
- [Source Code](https://github.com/andrewparadi/docker-uwaterloo)