We are not infra guru’s (well, we are not gurus at nothing really…) but we do get asked here and there about eramba as a docker container.
we dont know a lot about docker, but the benefit there seems to be around deploying an application that changes its code all the time (development environments, qa environments, microservices, etc) so of course updating code, pushing . abutton a voila all works in a light manner is really pretty.
but i honestly dont see how that translates to an application that is not deployed every time an update is needed, like eramba or a macos system or a linux system or a wordpress crm. since the update is done on the application and by the application, why would a docker make things any easier?
just asking here for expert opinion - again not taking sides …
You can think of a docker container as a lightweight VM - it sits somewhere between a VM and a application running inside a chroot.
What docker allows is for a controlled well known, minimal environment to execute the process in. By limiting what is installed in the container you limit the potential for lateral movement if the container was to be compromised.
On top of this docker compose can be used to define a configuration that works out of the box - a user can simply docker-compose up and have a working environment including configured mysql server in a matter of seconds. Also it is becoming more common for PaaS vendors to natively provide provision for running ‘serverless’ containers - sees AWS Fargate for an example of this.
When the updates are done by the application itself obviously there is the problem of database migrations being consistent with the version of the app that has been installed. There isn’t really a common solution for this, beyond the application detecting and managing it. Some people use an orchestration layer such as kubernetes and helm charts to manage this process but that is more involved and requires a bit more infrastructure than a single docker server to make work.
I have been running eramba inside a docker container by treating the application code as being persistent by setting it up as a volume. This way the docker container only versions the php and apache (and wkhtmltopdf) versions. My database sits on AWS RDS so AWS manage the mysql part of my deployment.
@martin is working on building community 2019 and we’ll most likely expand download options to include docker and AWS Market … we’ll see how that goes !
@martin In case it helps here is the dockerfile that I am using:
RUN apt-get update && apt-get -y install libldap2-dev libicu-dev libcurl4-openssl-dev libedit-dev libpng-dev libxml2-dev mysql-client libxrender1 libfontconfig1 libxext6 libfreetype6 fontconfig libjpeg62-turbo xfonts-75dpi xfonts-base
RUN docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/
RUN docker-php-ext-install mysqli pdo pdo_mysql ldap gd mbstring exif zip curl readline xml intl
RUN a2enmod headers rewrite
RUN cd /tmp && curl -GL -O https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.stretch_amd64.deb && dpkg -i wkhtmltox_0.12.5-1.stretch_amd64.deb && rm wkhtmltox_0.12.5-1.stretch_amd64.deb
Ok - that was my technical question i see how you then circumnavigate the issue. we will provide docker images for community and later on perhaps for enterprise too, the fetching code / update over git wont happen as we are not able to publish code in git openly for various other reasons.
Do you have any updated on that?? Here is my Dockerfile, I would like to find a way to periodically build containers with updated Eramba version and switch them with the running one without loosing the state of the application.
Here a related discussion with more details.