diff --git a/tech_docs/docker_dev_enviroments.md b/tech_docs/docker_dev_enviroments.md new file mode 100644 index 0000000..c62b17d --- /dev/null +++ b/tech_docs/docker_dev_enviroments.md @@ -0,0 +1,305 @@ +Certainly! Let’s take a step back and define more logical and well-defined environments tailored to your needs. We’ll create distinct Docker environments for JSON processing, API interactions, notebook visualizations, data analysis, web development, DevOps, and testing. + +### Logical Environments + +1. **JSON Processing Environment**: + - **Purpose**: To handle JSON parsing, validation, and transformation. + - **Dependencies**: Libraries for working with JSON data. + +2. **API Interaction Environment**: + - **Purpose**: To interact with APIs, handle requests, and manage responses. + - **Dependencies**: HTTP clients and frameworks for API interactions. + +3. **Notebook Visualization Environment**: + - **Purpose**: To perform data analysis and visualization in Jupyter notebooks. + - **Dependencies**: Libraries for data manipulation and visualization. + +4. **General Data Analysis Environment**: + - **Purpose**: To analyze and process data using various data science tools. + - **Dependencies**: Libraries for data manipulation, analysis, and machine learning. + +5. **Web Development Environment**: + - **Purpose**: To develop web applications and APIs. + - **Dependencies**: Web frameworks and tools for developing web services. + +6. **DevOps Environment**: + - **Purpose**: To manage infrastructure, automate tasks, and handle CI/CD pipelines. + - **Dependencies**: Tools for infrastructure as code, automation, and cloud services. + +7. **Testing Environment**: + - **Purpose**: To run unit tests, integration tests, and other forms of automated testing. + - **Dependencies**: Testing frameworks and tools for code coverage. + +### Refactored Environments + +#### 1. JSON Processing Environment + +**Dockerfile.json-processing:** +```dockerfile +FROM python:3.9 + +RUN apt-get update && \ + apt-get install -y vim git curl + +RUN mkdir -p ~/.vim/pack/plugins/start && \ + curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ + https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim + +COPY .vimrc /root/.vimrc + +WORKDIR /app + +COPY requirements-json.txt /app/ + +RUN pip install --no-cache-dir -r requirements-json.txt + +COPY . /app + +CMD ["tail", "-f", "/dev/null"] +``` + +**requirements-json.txt:** +``` +jsonschema +pydantic +ujson +``` + +#### 2. API Interaction Environment + +**Dockerfile.api-interaction:** +```dockerfile +FROM python:3.9 + +RUN apt-get update && \ + apt-get install -y vim git curl + +RUN mkdir -p ~/.vim/pack/plugins/start && \ + curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ + https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim + +COPY .vimrc /root/.vimrc + +WORKDIR /app + +COPY requirements-api.txt /app/ + +RUN pip install --no-cache-dir -r requirements-api.txt + +COPY . /app + +CMD ["tail", "-f", "/dev/null"] +``` + +**requirements-api.txt:** +``` +requests +httpx +fastapi +pydantic +ujson +``` + +#### 3. Notebook Visualization Environment + +**Dockerfile.notebook-visualization:** +```dockerfile +FROM python:3.9 + +RUN apt-get update && \ + apt-get install -y vim git curl + +RUN mkdir -p ~/.vim/pack/plugins/start && \ + curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ + https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim + +COPY .vimrc /root/.vimrc + +WORKDIR /app + +COPY requirements-visualization.txt /app/ + +RUN pip install --no-cache-dir -r requirements-visualization.txt + +COPY . /app + +CMD ["jupyter", "notebook", "--ip=0.0.0.0", "--allow-root", "--no-browser"] +``` + +**requirements-visualization.txt:** +``` +numpy +pandas +matplotlib +seaborn +jupyter +plotly +``` + +#### 4. General Data Analysis Environment + +**Dockerfile.data-analysis:** +```dockerfile +FROM python:3.9 + +RUN apt-get update && \ + apt-get install -y vim git curl + +RUN mkdir -p ~/.vim/pack/plugins/start && \ + curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ + https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim + +COPY .vimrc /root/.vimrc + +WORKDIR /app + +COPY requirements-data-analysis.txt /app/ + +RUN pip install --no-cache-dir -r requirements-data-analysis.txt + +COPY . /app + +CMD ["tail", "-f", "/dev/null"] +``` + +**requirements-data-analysis.txt:** +``` +numpy +pandas +scipy +scikit-learn +matplotlib +seaborn +jupyter +``` + +#### 5. Web Development Environment + +**Dockerfile.web-development:** +```dockerfile +FROM python:3.9 + +RUN apt-get update && \ + apt-get install -y vim git curl + +RUN mkdir -p ~/.vim/pack/plugins/start && \ + curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ + https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim + +COPY .vimrc /root/.vimrc + +WORKDIR /app + +COPY requirements-web-dev.txt /app/ + +RUN pip install --no-cache-dir -r requirements-web-dev.txt + +COPY . /app + +CMD ["tail", "-f", "/dev/null"] +``` + +**requirements-web-dev.txt:** +``` +flask +django +fastapi +requests +httpx +``` + +#### 6. DevOps Environment + +**Dockerfile.devops:** +```dockerfile +FROM python:3.9 + +RUN apt-get update && \ + apt-get install -y vim git curl + +RUN mkdir -p ~/.vim/pack/plugins/start && \ + curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ + https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim + +COPY .vimrc /root/.vimrc + +WORKDIR /app + +COPY requirements-devops.txt /app/ + +RUN pip install --no-cache-dir -r requirements-devops.txt + +COPY . /app + +CMD ["tail", "-f", "/dev/null"] +``` + +**requirements-devops.txt:** +``` +ansible +terraform +docker +boto3 +``` + +#### 7. Testing Environment + +**Dockerfile.testing:** +```dockerfile +FROM python:3.9 + +RUN apt-get update && \ + apt-get install -y vim git curl + +RUN mkdir -p ~/.vim/pack/plugins/start && \ + curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ + https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim + +COPY .vimrc /root/.vimrc + +WORKDIR /app + +COPY requirements-testing.txt /app/ + +RUN pip install --no-cache-dir -r requirements-testing.txt + +COPY . /app + +CMD ["tail", "-f", "/dev/null"] +``` + +**requirements-testing.txt:** +``` +pytest +mock +coverage +tox +``` + +### Managing Multiple Dockerfiles + +You can use descriptive names for the Dockerfiles and build commands specifying the Dockerfile to use. + +**Building Containers:** +```sh +docker build -t json-processing-env -f Dockerfile.json-processing . +docker build -t api-interaction-env -f Dockerfile.api-interaction . +docker build -t notebook-visualization-env -f Dockerfile.notebook-visualization . +docker build -t data-analysis-env -f Dockerfile.data-analysis . +docker build -t web-development-env -f Dockerfile.web-development . +docker build -t devops-env -f Dockerfile.devops . +docker build -t testing-env -f Dockerfile.testing . +``` + +**Running Containers:** +```sh +docker run -it --name json-processing-container json-processing-env +docker run -it --name api-interaction-container api-interaction-env +docker run -it --name notebook-visualization-container -p 8888:8888 notebook-visualization-env +docker run -it --name data-analysis-container data-analysis-env +docker run -it --name web-development-container web-development-env +docker run -it --name devops-container devops-env +docker run -it --name testing-container testing-env +``` + +This structure ensures each environment is well-defined, logical, and tailored to specific tasks, allowing you to work efficiently across different projects and avoid conflicts between dependencies. \ No newline at end of file