Fork me on GitHub

Networld - Research and Development Logo

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.

Source Code Link Shell Command
docker-mongodb mongodb
docker-rabbitmq rabbitmq
docker-redis redis
docker-testrpc testrpc
docker-webapp webapp

How to use the docker images?

  1. 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.

  2. 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.

    Notice! Don't forget to precompile the assets and to install all dependencies locally.
    bundle install --deployment; RAILS_ENV=production bundle exec rake assets:precompile
  3. Proxy the webapp with the help of nginx (or apache2)...

    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.