As Docker became a very popular tool I read a lot of information about it but I can't get - do I need it as single full-stack developer?

I develop web application that has 2 backend services written in ASP.NET Core and C++ talking to PostgreSQL database and Angular 2 frontend part. All webapp is routed using nginx.

To deploy my app I have a Jenkins job that build all parts, copies it to the server and restarts them.

So my questions are (taking into account that my app still in alpha and will work on a single server for the next 1-2 years):

  1. Do I need docker (if not - will I need it in the future?)
  2. How it helps me?
  3. If so - do I need single or multiple containers
  4. Where can I find a workflow to work with docker that is suitable for my case?
  5. Will my database data be persistent after container update?

closed as too broad by Robert Harvey, Eric King, Doc Brown, Ixrec, Dan Pichelman Jun 14 '16 at 13:54

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 1
    1. We don't know. We can't predict the future, and we don't know your specific requirements. – Robert Harvey Jun 13 '16 at 17:13
  • 1
    2. docker.com/what-docker – Robert Harvey Jun 13 '16 at 17:14
  • 3. The idea seems to be one container per application. – Robert Harvey Jun 13 '16 at 17:15
  • 1
    If you've read the documentation, and you still don't see how it would benefit you, then implementing it might actually be harmful to your project. Every technology has a cost; the benefit must always exceed that cost. You are the only one who can make that determination. – Robert Harvey Jun 13 '16 at 17:21
  • 1
    There's no possible way anybody on this site can tell you if you've missed something in your research. Describing the benefits of Docker and where it applies requires more details that can be provided in a single answer here. Hence the suggestion to read the docs and apply what it says to your specific situation. – Eric King Jun 13 '16 at 17:30
  1. You don't need docker for anything, but it does make certain things a lot easier.
  2. Docker helps you by isolating and standardizing your runtime environment. This means the environment you do your developer testing in at your desk is not materially different from what you use in production. It also makes it easy to scale up by spinning up new instances of containers on demand. Cloud services like Amazon AWS let you do this relatively easily and pay according to your actual demand.
  3. You usually have one container per microservice. In your case, that would probably be at least 4 containers: 2 for your backend services, one for your database, and one for nginx. Often the backend services can be split further into logical components, which get their own containers.
  4. Workflows are highly application-specific. There really is no substitute for becoming familiar with the documentation and coming up with your own solutions.
  5. If you want your data to persist, you need to use volumes. Otherwise your data goes away when you stop your container. For obvious reasons, this is something you'll want to understand thoroughly, and there are different options with different trade offs.
  • Can you explain what things docker can make a lot easier for my case? From part (2) I can see how docker helps in scaling and helps easier to reproduce issues. Anything else? – Rem Jun 14 '16 at 6:08

Not the answer you're looking for? Browse other questions tagged or ask your own question.