This is the reference implementation of the Nulecule container application Specification: Atomic App
Python Shell Makefile
Latest commit fba5cbb Nov 22, 2016 @cdrage cdrage committed on GitHub Merge pull request #802 from dymurray/ocp
Add checking if resource is OpenShift specific to properly create OpenShift artifacts
Failed to load latest commit information.
Dockerfiles.git 0.6.4 Release Oct 6, 2016
Dockerfiles.pkgs 0.6.4 Release Oct 6, 2016
atomicapp Update cli/ to catch syntax error from latest version of flake8 Nov 14, 2016
docs Merge Nulecule specification into Atomic App Aug 10, 2016
script Update release script regex Sep 6, 2016
tests/units Check if an OCP specific resource is being requested and use the oc_a… Nov 14, 2016
.dockerignore Adds dockerignore file. Dec 11, 2015
.gitignore Ignore .swn vim temp files May 27, 2016
.gitmodules Add wordpress app submodule Mar 25, 2015
.travis.yml Modify TravisCI for updated Makefile May 12, 2016 0.6.4 Release Oct 6, 2016 Instruction to skip travis CI Mar 8, 2016
Dockerfile 0.6.4 Release Oct 6, 2016
Dockerfile.test Remove locking from Atomic App Apr 21, 2016
Makefile Use travis CI to run tests from tests/units dir. Aug 31, 2016 0.6.4 Release Oct 6, 2016 update building Aug 31, 2015
atomicapp.spec Add binary generation May 18, 2016 Fixing the Dockerfile path Jan 11, 2016
gpl-3.txt add the GPL3 text and a short reference to it to CONTRIBUTING file Jul 16, 2015
lgpl-3.0.txt replaces GNU AGPL by GNU LGPL Jul 16, 2015
requirements.txt Remove locking from Atomic App Apr 21, 2016 0.6.4 Release Oct 6, 2016
test-requirements.txt Openshift to KubeShift conversion and improvements Aug 10, 2016
tox.ini Remove E41 from pep8 ignore list Aug 28, 2015

Atomic App

Atomic App is a reference implementation of the Nulecule specification. Packaged Atomic App containers are "Nuleculized" and each component of the package is a "Nulecule".

Atomic App is used to bootstrap packaged container environments and run them on multiple container orchestrators. It is designed from the ground-up to be portable and provider pluggable.

  • A "packaged installer" for all container-based environments and applications. Replace all those bash and Ansible scripts with one container-based deployment tool.

  • Target multiple providers: Specify the provider you want the Atomic App to run on. It supports Kubernetes, OpenShift, Mesos+Marathon and Docker.

  • Inherit already packaged containers: Create composite applications by referencing other Nulecule-compliant applications. For example, plugging in an alternative well-orchestrated database in another referenced container image.

  • Fetch and run entire environments: Use atomicapp fetch and atomicapp run to run pre-packaged Nuleculized containers.

Installing Atomic App

From Linux:

git clone && cd atomicapp
sudo make install


Download a pre-signed .tar.gz from / GitHub:

export RELEASE=0.6.4
tar -xvf atomicapp-$RELEASE.tar.gz && cd atomicapp-$RELEASE
sudo make install


This README contains some high level overview information on Atomic App. The detailed documentation for Atomic App resides in the docs directory. The index provided conveniently links to each section below:

  1. Quick start
  2. Getting started
  3. Providers
    1. Docker
    2. Kubernetes
    3. OpenShift
    4. Marathon
  4. CLI
  5. Nulecule file
  6. File handling
  7. Specification coverage
  8. Contributing
  9. Dependencies
  10. Specification

Getting started

Atomic App can be used either natively on your OS or ran via the atomic command on Fedora or CentOS Atomic hosts.

Detailed instructions on getting started are available. Alternatively, use the quick start guide to get a Nuleculized application running immediately.

An extended guide on the Nulecule file format is also available.

Real-world examples

Atomic App can be used to launch a cluster of containers (application servers, databases, etc.).

For a list of already packaged examples, visit the nulecule-library repo.


We currently support:

  • Docker
  • Kubernetes
  • OpenShift 3
  • Marathon (Mesos)

Providers represent various deployment targets. They can be added by placing the artifact within the respective in artifacts/ folder. For example, placing deploy_pod.yml within artifacts/kubernetes/.

For a detailed description of all providers available see docs/

Contributing to Atomic App

Code Health Build Status Coverage Status

First of all, awesome! We have a development guide to help you get started!

If you have any issues or get stuck, feel free to open a GitHub issue or reach us at our communication channels (see below).


See for a list of current Atomic App dependencies.


Want to view the specification and contribute to changes? See the Nulecule spec for more information.

Communication channels

  • IRC: #nulecule on
  • Mailing List:
  • Weekly IRC Nulecule meeting: Monday's @ 0930 EST / 0130 UTC
  • Weekly SCRUM Container-Tools meeting: Wednesday's @ 0830 EST / 1230 UTC on Bluejeans


Copyright (C) 2016 Red Hat Inc.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see

The GNU Lesser General Public License is provided within the file lgpl-3.0.txt.