We are currently investigating Docker as a way to ship and deploy out applications but we have never done this before and we are not entirely sure the benefits are enough to justify the effort. This is a brief description of our scenario:
- Our applications are deployed on-premises (at customer sites), on networks that are secured and have no internet access. We do not have remote access to the target servers and the infrastructure is operated by the customer IT themselves.
- Our application is built on the following stack: Java, Spring Boot, SQL Server DB (or others).
- In some cases our application has to connect to an additional DB source which is on the customer network but on a separate server from our application
- In some cases the DB of our application may also be on a separate server controlled by the customer
- In some cases the customer assigns us a VM (generally windows) and it is likely that we would need to install the docker host in that VM (this is seems likely to cause performance issues).
- At the moment the customer IT has access to the Tomcat where our application is deployed and can make their own changes (e.g. regarding SSL configuration, etc).
Question
- Does it make sense to use docker in a scenario like this? Does the absence of internet as well as the little control we have over the overall infrastructure make the use of docker too difficult?
- How should we build and deliver when using docker? At the moment we use maven and we build jar (or war) files that we then install on the target server. Is there any solutions specific to shipping Docker images in an offline environment? What we need is to have a process that looks similar to what we do now, where we can build deliverables and ship them easily to the customer. We are unable to perform complex installation processes onsite.
- How to deliver software updates without loosing all the existing data?
- Will this makes things harder for the customer IT if they have no experience with Docker? If we decide to use it, there's seem no way the can avoid also having to learn the basics that allows them to do some basic operations (e.g. access the tomcat instance and modify the tomcat configuration).
- Is it sensible to install a docker host on a windows VM?
Many thanks