1

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?
13
  • 1
    1. We don't know. We can't predict the future, and we don't know your specific requirements. Commented Jun 13, 2016 at 17:13
  • 1
    2. docker.com/what-docker Commented Jun 13, 2016 at 17:14
  • 3. The idea seems to be one container per application. Commented Jun 13, 2016 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. Commented Jun 13, 2016 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
    Commented Jun 13, 2016 at 17:30

1 Answer 1

2
  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.
1
  • 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? Commented Jun 14, 2016 at 6:08

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