Can the development environment built by docker really enable small white programmers who do not know how to build the environment to get started writing code quickly?

  docker, question

I just started to learn about docker because I started a new project, using Django+Hbase+Git. It takes a long time to build a normal development environment, so I studied docker, but I still don’t know anything about the development environment built by docker.

Our project team’s idea is that as long as everyone has a docker installed on their host, they can directly use Pycharm in docker to develop, modify code and synchronize through Git.The ideal situation is that other developers don't even have to install Pycharm.The next situation is that developers only need to install python, Pycharm, and docker to debug and run the code in the local Pycharm. I don’t know if docker can realize such a function, and ask the Great God to advise lol.

First of all, pycharm cannot be run in docker. You should treat each container of docker as an independent computer. Ask, someone else’s computer is equipped with pycharm. When you are in the same LAN, can you edit python code on your computer with his pycharm?

Docker’s main task is to isolate and package the environment.

Isolation of Environment: Each container of docker can be simply understood as a sandbox, and all kinds of software installed in the container will not affect the real software environment of the host computer. Suppose you have 10 projects that are being maintained at the same time, but the problem is that each of these 10 projects depends on different versions of python (Project 1 depends on python1.1, Project 2 depends on python1.2, Project 3 depends on python2.1 … Project 10 depends on python3.3). What would you do without docker? Put one version on your computer? Will there be conflicts between the environmental dependencies of different versions? If you think about it, you’ll have a big head. Docker, on the other hand, is completely ok. Their respective environments are completely independent and do not affect each other. They can play whatever they want.

Packaging of Environment: Suppose you have a 100-person development team. Some development environments are windows, some are linux (the specific hairstyle versions are also different), and some are mac. The versions of software installed on their respective systems are varied. At this time, you are going to develop a project. Since it is a project, it must be the best to unify the development environment, consistent configuration parameters, consistent python version, consistent versions of various extension packages and extension packages, consistent environment variables, etc. If you configure your own environment at this time, it may be three times five divided by two for veterans, but for newcomers who are not experienced enough, it may take a few days to do a good job in this environment. Docker is simple. As long as a person writes a dockerfile file, writes all kinds of configurations in it, and then distributes it to all members of the development team, everyone only needs a docker build command to complete the construction of the environment. Moreover, the system environment, configuration parameters, extension library and dependency of the software operation are consistent. After the completion of the project, the dockerfile can also be used to build an online software project operating environment (or directly package the containers used in local development into a mirror image, and then publish the mirror image) when actually going online, which ensures the consistency between the online operating environment and the local development environment and avoids various problems caused by different environments.

As far as your problem is concerned, combined with my personal experience, Django and Hbase can be placed in docker (Django image should have its own python running environment), pycharm and git are installed in the host computer. So what developers need to install is pycharm+git+docker