Projects also contain an abstraction around Docker containers to manage a compute environment. A collection of files are used to specify the Base (a Docker image to build from), packages to be installed via supported package managers (i.e. apt, conda, pip), and any additional custom Docker instructions.
To add a package to your project:
- Select the 'Environment' tab of your project
- Click the 'Add Package' button
- Select a package manager to use
- Add a package name
- (Optional) If you need a specific version of a package enter in a version number
- Click the 'Add' button
- Click the 'Install All' button
- Wait for the project to rebuild
Example using the Package Manager to configure an environment
The package manager interface can save time and cognitive overhead, for example by querying for the latest version of a
conda package. It's also well organized and easy to read. If documentation is available for a package, it can be accessed directly from the package listing.
Packages can be individually removed by clicking the trashcan icon in the 'Actions' column of the package manager.
Removing a single package
Multiple packages can be removed at once by selecting clicking on the check boxes of the packages you desire to remove. Once all of the packages you want to remove are selected click on the 'Delete' button.
You can also change the base of your project.
- Click on the 'Change' button on the Base card
- Select a new base
- Wait for the project to finish building
Docker snippets can be used when your requirements include complex or manual installations, including things like configuring PPAs (additional Ubuntu package archives) or custom Conda channels. Gigantum reduces the burden if only one person on your team knows how to install a complicated library or package - once it is installed in a Project, anyone else can easily access it on their local machine with a single click to install or sync.
Each element of the environment is managed as a separate file, which allows for easy Git merges. These files are used to render a Dockerfile (located at
.gigantum/env/Dockerfile in the Project) that is used by the Client to build the container for you, and which you can always copy and use anywhere you'd like.
It is important to understand that currently the Dockerfile is rendered in an unoptimized manner that will be improving in the future. To make edits easy, each package to be installed is added via a Docker layer. In the future, we'll have different options for how to render the file, resulting in faster builds, more compact images, and greater control over the order in which things get installed. If you require this kind of control today, you can of course write custom Docker snippets - and let us know if you need assistance in the forum!
The final Dockerfile is rendered in this order:
aptpackages, sorted alphabetically
condapackages, sorted alphabetically
pippackages, sorted alphabetically
- Custom Docker instructions