Devanik21 / ISRO_Mining_Site_FINAL_APP

MIT License
11 stars 39 forks source link

Implementation of Docker for seamless and smooth experience #54

Open RandomSummer opened 1 month ago

RandomSummer commented 1 month ago

Hey! @Devanik21

I noticed that the repository does not contain a docker and docker-compose.yml file, which is essential for streamlining the setup of the backend services, particularly for the Streamlit projects.

I have extensive experience in setting up Docker environments for local development. I've worked on several projects where docker played a crucial role in streamlining the development process, and I am confident that I can deliver a high-quality solution for this repository.

The addition of a docker-compose.yml file would greatly improve the development and deployment process by enabling easier orchestration of the backend services using Docker.

Proposed Solution I would like to contribute by adding a Dockerfile and docker-compose.yml file that:

Defines services for the backend. Configures networking to allow smooth communication. No one ever needs to worry about the setup it will be done using only one code. This will allow contributors and developers to quickly spin up the backend environment using Docker, enhancing productivity and minimizing setup errors.

Please let me know if this sounds like a good enhancement, and I'd be happy to get started! 😊

For reference my previous PR : https://github.com/yashasvini121/predictive-calc/issues/45

Thank you for your consideration!

github-actions[bot] commented 1 month ago

👋 Thank you for raising an issue! We appreciate your effort in helping us improve. Our team will review it shortly. Stay tuned!

Devanik21 commented 1 month ago

Hey! @Devanik21

I noticed that the repository does not contain a docker and docker-compose.yml file, which is essential for streamlining the setup of the backend services, particularly for the Streamlit projects.

I have extensive experience in setting up Docker environments for local development. I've worked on several projects where docker played a crucial role in streamlining the development process, and I am confident that I can deliver a high-quality solution for this repository.

The addition of a docker-compose.yml file would greatly improve the development and deployment process by enabling easier orchestration of the backend services using Docker.

Proposed Solution I would like to contribute by adding a Dockerfile and docker-compose.yml file that:

Defines services for the backend. Configures networking to allow smooth communication. No one ever needs to worry about the setup it will be done using only one code. This will allow contributors and developers to quickly spin up the backend environment using Docker, enhancing productivity and minimizing setup errors.

Please let me know if this sounds like a good enhancement, and I'd be happy to get started! 😊

For reference my previous PR : yashasvini121/predictive-calc#45

Thank you for your consideration!

Thanks, sure.But I need to know more about it as I'm newbie to docker.

Devanik21 commented 1 month ago

Hey! @Devanik21

I noticed that the repository does not contain a docker and docker-compose.yml file, which is essential for streamlining the setup of the backend services, particularly for the Streamlit projects.

I have extensive experience in setting up Docker environments for local development. I've worked on several projects where docker played a crucial role in streamlining the development process, and I am confident that I can deliver a high-quality solution for this repository.

The addition of a docker-compose.yml file would greatly improve the development and deployment process by enabling easier orchestration of the backend services using Docker.

Proposed Solution I would like to contribute by adding a Dockerfile and docker-compose.yml file that:

Defines services for the backend. Configures networking to allow smooth communication. No one ever needs to worry about the setup it will be done using only one code. This will allow contributors and developers to quickly spin up the backend environment using Docker, enhancing productivity and minimizing setup errors.

Please let me know if this sounds like a good enhancement, and I'd be happy to get started! 😊

For reference my previous PR : yashasvini121/predictive-calc#45

Thank you for your consideration!

If you have time, make me clear about docker, it will be extremely helpful.

RandomSummer commented 1 month ago

Sure thing, I will provide you with some insights.

Problems:

  1. Most of the time is spent by developers setting up the app environment.
  2. They have to simultaneously update their environment. (System update, Software update)
  3. Things get pretty messy for different OS kernels. (Linux, Windows, Mac)
  4. If you run this app locally there might be a problem between your system software requirement and app requirement, so what we do is we use a virtual environment. Sometimes developers face difficulties.

Solution:

  1. Docker can solve these things, I will help you set up an environment where such hassle won't bother you.
  2. There is no need for an environment set up, use a single code it will work like butter.
  3. I can provide you not only a virtual environment, but I can provide you virtual container with its own OS kernel, with no cross-platform OS problem.
  4. I can guide you to create a Docker Image of your project which can be accessed by anyone.

Both Development and Operation will be done simultaneously.

I have helped you even many more things such as PORT, network enhancement, data storage, etc.

Thanks for your consideration 😎

Devanik21 commented 1 month ago

@RandomSummer hmm i understand, but the app I have created is just a link that needs internet to open in any browser (win / mac/ linux.....any). Why I'll need docker? please explain me , I'm just curious😫

RandomSummer commented 1 month ago

@Devanik21 I know what you are but everything is for developer POV, developers with (win/Mac/Linux.... any). If someone wants to use your project, later on, to create something innovative.... then he has to go through all the hassle to set up the process, but with docker, we can save that time and hassle...... we save time and mental stress for setting up the environment, connection, networking, PORT management much more...

Things that I would bring using Docker are:

  1. Environment Consistency:- Docker ensures that the project runs the same way on all machines by encapsulating the environment.

  2. Simplified Setup:- With Docker, new developers or collaborators can quickly set up the Streamlit project by just running the Docker container. They don’t need to manually install dependencies or configure their systems.

  3. Version Control for Environments:- The Dockerfile serves as version control for the environment, making it easy to track changes in the system configurations alongside code changes in GitHub.

  4. Isolation:- Docker containers provide complete isolation, so different versions of libraries, Streamlit, or other dependencies can coexist without conflicts, which is especially useful if multiple projects are being worked on.

  5. Ease of Deployment:- Docker makes deployment smoother by bundling the application and environment into a single image. Streamlit apps can be deployed to any server or cloud platform that supports Docker without worrying about environment compatibility.

  6. CI/CD Integration:- Docker can be easily integrated into CI/CD pipelines. You can automate the testing and deployment of your Streamlit app with GitHub Actions or any other CI/CD tool by leveraging Docker containers.

  7. Scalability:- Docker works well with container orchestration tools like Kubernetes, enabling your Streamlit app to be scaled efficiently in a production environment if needed.

All these are for the ease of the workflow for developers and collaborators.

Devanik21 commented 1 month ago

@RandomSummer ,looks advanced

RandomSummer commented 1 month ago

It won't be a problem it will make it simple for you. If you want to implement Docker assign the task to me and let me know.