Add tech_docs/docker_dev_enviroments.md
This commit is contained in:
305
tech_docs/docker_dev_enviroments.md
Normal file
305
tech_docs/docker_dev_enviroments.md
Normal file
@@ -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.
|
||||||
Reference in New Issue
Block a user