Do I first need docker environment before starting my project?

I am going to work with Node.js and PostgreSQL on Linux. I read many hours about how docker actually works. Still I am not sure that is docker environment needed before starting my project or I can use docker after completion of the project?

  • NoHostAvailableException in DBeaver when connecting to remote Cassandra docker container
  • Dockerfile: is it possible to reference overridden entrypoint and cmd?
  • How to setup zookeeper cluster on docker swarm
  • Jmeter and Docker
  • Chain automated builds in the same Docker Hub repository
  • XRDP in Docker Container KDE segfault, LXDE OK
  • docker-machine ls shows state timeout whenever another docker machine is created
  • How do I expose port from Container to host?
  • WSO2 not compatible with Docker
  • openshift v3 pod file not found
  • Docker image size and how much space should I expect 'dnu restore' to take up?
  • Understanding Docker Macvlan network
  • 2 Solutions collect form web for “Do I first need docker environment before starting my project?”

    Lets first understand what docker is and how you can use it in your project.

    Docker have three core concepts:

    1) Docker engine : a lightweight runtime and robust tooling that builds and runs your Docker containers.

    2) Docker image : a carbon copy of your project environment including all environment dependencies like base operating system, host entries, environment variables, databases, web/application servers. In your case, Linux distribution of your choice, node.js and required modules, PostreSQL and it’s configuration.

    3) docker container : can be visualized as an virtual Linux server running your project. Each time you use docker run, a new container is launched from the docker image.

    You can visualize a docker-environment as an lightweight virtual machine where you can run your project without any external interference(host entries/environment variables/ RAM/ CPU) from other projects.

    So as a developer, you can develop your project on your Dev machine and once it’s ready to be pushed to QA/Staging you can build a docker image of your project which then can be deployed on any environment(QA/Staging/Production).

    You can launch multiple container from your image on single or multiple physical servers.

    You can introduce docker whenever you want. If using multiple servers then you can create a docker container with one server in it and the other (non dockerised solution) makes requests to that.

    Or you could dockerise them both.

    Basically, introduce docker when you feel the time is right.

    I like to divide a large project into multiple sections – e.g. front end web sever, backend authentication server, backend API server 1, backend API server 2, etc

    as each part of the project gets completed i dockerise it. The other parts then use the dockerised solution.

    Hope it helps.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.