Add tech_docs/docker_dev_enviroments.md

This commit is contained in:
2024-06-02 03:18:20 +00:00
parent 010bc77529
commit 63cffe7400

View File

@@ -0,0 +1,305 @@
Certainly! Lets take a step back and define more logical and well-defined environments tailored to your needs. Well 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.