Skip to content

Docker Practices

Mikko Heikkinen edited this page Oct 4, 2017 · 9 revisions

See development guidelines https://github.com/DINA-Web/guidelines/blob/master/DINA-Web-Development-Guidelines.md

The goals of using Docker to run DINA modules are:

  • Making it easy to create similar environment for development, testing and production, to avoid dependency issues.
  • Making it easy to test, e.g. running alternative branches (e.g. with updated database version) with less manual work.

Possible goals in the future, but not at this point might be:

  • Deployment of DINA as official, easy-to install Docker images to third parties.
  • Making scaling easier.

Estimate on these terms how much work is saved by dockerizing or automating something with Docker.

Modules run by Docker

  • Email server (dmail)
  • Proxy for HTTPS
  • User management

Method A: Single repository

Single repository that contains backend and frontend dockerized. For example, accounts-docker. This is the default setup in DINA-project, due to it's simplicity.

Pros:

  • Simpler to set up
  • Version dependencies are easier to handle

Cons:

  • Forces you to use Docker, or tweak the respository for other tools

Method B: Separate repositories

Separate repositories for

  • Backend
  • Frontend
  • Dockerized module, which pulls from back- and frontend repositories

Pros:

  • Easier for someone to create a separate project (e.g. using Vagrant or Ansible), pull the source code, and not be distracted by the Docker-configuration

Cons:

  • More complicated to set up
  • Version dependencies are more difficult to handle
You can’t perform that action at this time.