Networld Docker Images

A short, but comprehensive, explanation how to use the Networld docker images and how to get started
to develop applications that can be deployed in the same way, and in the same environment, as used during
development.

How to use the docker images?

Start the mongodb database image...

We are mounting a directory of the host machine in order to have the data persistent. The docker container
contains only the code, but not the data. The reason is that we don't want to commit after each database write.

~$

Start the ruby on rails webapp image...

Mount the Ruby on Rails application (current directory) into the networld/docker-base
image and link it against the MongoDB container. Don't forget to use the MONGO_PORT_27017_TCP_ADDR
and MONGO_PORT_27017_TCP_PORT environment variables in your application.

In production, or even staging or development, we want to access the webapp via subdomain and not via http://$IP:$PORT.

What is missing and what comes next?

The current environment is suitable for development, but not yet production ready. The reasons are:

No deployment automation

Images are basic installations without security features

Single host configuration, e.g. no support for mongodb replica sets

The next step will be to improve the local development environment. After stabilizing this
local development environment it will be tested in staging for a few weeks. The underlying
web application is the Sigimera Campaign Management with Bitcoin service. If this
succeeds and is stable enough the focus will be to automate and simplify deployment in a
distributed and scalable way.

Does Networld provide higher level software?

As you can see the parameters to start a container are pretty long and you have to keep track
how different images are linked together. Another problem is that all images have to run on
the same host. The plan is to establish a central management host that keeps track of
service orchestration with related configuration files. To simplify the handling the management
host should provide a basic frontend and the underlying service orchestration and configuration
phase should be abstracted away from the deployment.