An introduction on how to run Syncope as a Docker application
Docker is a new (but already widely used) "virtualization" technology.
Its creators defined it: "Docker is a tool that can package an application and its dependencies in a virtual container that can run on any Linux server. This helps enable flexibility and portability on where the application can run, whether on premises, public cloud, private cloud, bare metal, etc."
You can bring everything with Docker, and it is relatively simple to use: you only need to provide a well-formed Dockerfile.
In this post we are going to introduce a simple project born with the specific goal to run Apache Syncope as a Docker application in a Docker container.
In this github repo of mine you can find a sample project form which you can get Dockerfile and needed initialization files (except Apache Syncope wars, that you have to build separately on your machine).
Following the github project above and its wiki, the steps to run your Apache Syncope + MySQL container can be summarized in:
If you have a Docker image you can import/export it from one machine to another very simply, and you also can choose what kind of (linux based) operating system to use inside your container; in fact in the case of our Apache Syncope image we used a minimal debian Jesse image, where minimal stands for a modified version of debian system without unuseul libraries, extensions, etc. There are a lot of very little and light images available on Docker hub, all free to use.
Moreover another important Docker feature is that you can "version" images, you also have in docker an embedded version control of your images, and if you want you can publish them on Docker official repository (hub) or on your custom (home-made) repository and version them in the same way.
Apache Syncope with Docker project is only a starting point, in fact there are a lot of improvements and developments that can be performed on the project, one for all the use of docker-compose a Docker sub-project that helps you to manage and link multiple containers by creating a YML file. For example this could be done for Apache Syncope to have a container with MySQL (or others) database and one container with the application (this would be more correct "Dockery" speaking).
Currently we are working to avoid initial build of the app by installing Apache Syncope from deb packages, you can find the project in this branch.