Portable environments for Docker swarms and Compose applications
Roj is a Docker management environment in a container build on native tools.
It is meant to provision hosts and configure swarms with docker-machine and manage stacks with docker-compose though a
Docker client.
Since all tools are run from a container, the created configurations, stored under /roj/config in the container and mounted
from on a host-volume, remain portable.
You can use portainer as Web UI to your Docker endpoints.
Supported cloud platforms: Generic, AWS, Google Cloud.
On your host
- docker
>=1.9 - docker-compose (optional)
>=1.8
For remote machine access
- access to hosts/VMs via SSH keys or
- credentials to create machines in the cloud (see
docker-machinedrivers)
Create a new directory for your roj-stacks project and add a docker-compose.yml with the following contents
roj:
image: dmstr/roj:0.3.0
working_dir: /roj
volumes:
- ./:/roj
By default swarm & stack configuration files will be placed into
./roj, change your desired configuration directory by updating the host-volume path on your machine.
Run the roj management container
docker-compose run --rm roj
Environment variables for the management container can be set in config/env. By default Docker configurations are also stored in this custom config directory. You may set various default for, ie. docker-machine or docker-compose here.
To add an additonal directory to PATH use ROJ_SCRIPTS_PATH.
From the management container...
Use $ boilr to create stacks from templates
Use $ docker to access the Docker daemon
Use $ docker-machine to create machines and provision discovery and a swarm.
Use $ docker-compose to run stacks
Use $ ctop for detailed container stats
And create files from a boilr-template
$ boilr template download schmunk42/roj-stacks-template stacks
$ boilr template use stacks .
You can always update environment configuration in config/env if needed, a management container restart is required after changing ENV variables.
TODO: Create SSH key
💡 Check out the docs section for specific host and/or provider requirements.
- https://docs.docker.com/swarm/install-manual/
- https://docs.docker.com/compose/swarm
- https://github.com/docker/swarm#swarm-disambiguation
- https://docs.docker.com/compose/production/


