Uploading default template
This commit is contained in:
+21
@@ -0,0 +1,21 @@
|
||||
FROM python:3.14-slim
|
||||
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
# System upgrades and tmux installation
|
||||
RUN apt-get update && apt-get upgrade -y && \
|
||||
apt-get install -y tmux && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Upgrade pip and install requirements
|
||||
COPY requirements.txt ./
|
||||
RUN pip install --no-cache-dir --upgrade pip
|
||||
RUN pip install --no-cache-dir -r requirements.txt debugpy
|
||||
|
||||
# Copy your tmux config to the container's home directory
|
||||
COPY .tmux.conf /root/.tmux.conf
|
||||
|
||||
COPY . .
|
||||
|
||||
# Default production command
|
||||
CMD [ "python", "./main.py" ]
|
||||
+150
@@ -0,0 +1,150 @@
|
||||
# Docker Python Development & Debugging Guide
|
||||
|
||||
This guide outlines the setup for a lean, telemetry-free development environment using **VSCodium**, **Docker**, and **tmux**. It is designed to be consistent across Windows, Mac, and Linux.
|
||||
|
||||
---
|
||||
|
||||
## 1. Project Structure
|
||||
Create the following files in your project root to keep the configuration modular and "neat".
|
||||
|
||||
```text
|
||||
.
|
||||
├── .tmux.conf # tmux customisation
|
||||
├── .vscode/
|
||||
│ ├── launch.json # VSCodium debugger config
|
||||
│ └── tasks.json # Automation for tmux attach
|
||||
├── docker-compose.yml # Production base
|
||||
├── docker-compose.override.yml # Development extensions
|
||||
├── Dockerfile # Image definition
|
||||
└── main.py # Your application code
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. The Configuration Files
|
||||
|
||||
### Dockerfile
|
||||
Ensures all tools (**tmux**, **debugpy**) and system upgrades are baked into the image.
|
||||
|
||||
```dockerfile
|
||||
FROM python:3.10-slim
|
||||
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
# System upgrades and tmux installation
|
||||
RUN apt-get update && apt-get upgrade -y && \
|
||||
apt-get install -y tmux && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Upgrade pip and install requirements
|
||||
COPY requirements.txt ./
|
||||
RUN pip install --no-cache-dir --upgrade pip
|
||||
RUN pip install --no-cache-dir -r requirements.txt debugpy
|
||||
|
||||
# Copy tmux config to root
|
||||
COPY .tmux.conf /root/.tmux.conf
|
||||
|
||||
COPY . .
|
||||
|
||||
# Default production command
|
||||
CMD [ "python", "./main.py" ]
|
||||
```
|
||||
|
||||
### docker-compose.yml (Production Base)
|
||||
```yaml
|
||||
version: '3'
|
||||
services:
|
||||
bank_analysis_excel:
|
||||
build: .
|
||||
container_name: bank_analysis_excel
|
||||
```
|
||||
|
||||
### docker-compose.override.yml (Development)
|
||||
```yaml
|
||||
version: '3'
|
||||
services:
|
||||
bank_analysis_excel:
|
||||
volumes:
|
||||
- .:/usr/src/app
|
||||
ports:
|
||||
- "5678:5678"
|
||||
tty: true
|
||||
stdin_open: true
|
||||
# Overrides the Dockerfile CMD to keep the workshop open
|
||||
command: tail -f /dev/null
|
||||
```
|
||||
|
||||
### .tmux.conf
|
||||
Enables mouse support and customises the interface.
|
||||
|
||||
```bash
|
||||
# Enable mouse mode for clicking/resizing
|
||||
set -g mouse on
|
||||
|
||||
# Visual improvements
|
||||
set -g default-terminal "screen-256color"
|
||||
set -g history-limit 10000
|
||||
set -g status-bg black
|
||||
set -g status-fg white
|
||||
set -g status-left ""
|
||||
set -g status-right "#[fg=green]#H #[fg=white]%H:%M"
|
||||
```
|
||||
|
||||
### .vscode/launch.json
|
||||
```json
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Python: Docker Attach",
|
||||
"type": "debugpy",
|
||||
"request": "attach",
|
||||
"connect": {
|
||||
"host": "localhost",
|
||||
"port": 5678
|
||||
},
|
||||
"pathMappings": [
|
||||
{
|
||||
"localRoot": "${workspaceFolder}",
|
||||
"remoteRoot": "/usr/src/app"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. The Daily Workflow
|
||||
|
||||
### Step 1: Start the Container
|
||||
Run in your host terminal (PowerShell, bash, or zsh):
|
||||
```bash
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
### Step 2: Open VSCodium & Attach
|
||||
If you set up the `tasks.json` automation, VSCodium will attach automatically. Otherwise, run:
|
||||
```bash
|
||||
docker compose exec bank_analysis_excel tmux
|
||||
```
|
||||
|
||||
### Step 3: Start the Persistent Loop
|
||||
In your primary **tmux** pane, run this loop so the debugger is always ready:
|
||||
```bash
|
||||
while true; do python3 -m debugpy --listen 0.0.0.0:5678 --wait-for-client main.py; done
|
||||
```
|
||||
|
||||
### Step 4: Split and Work
|
||||
* **Prefix Key**: `Ctrl + b`
|
||||
* **Split Vertically**: `Prefix` then `%`
|
||||
* **Switch Panes**: `Prefix` then `Arrow Keys` (or just click with your mouse).
|
||||
|
||||
---
|
||||
|
||||
## 4. Deploying to Production
|
||||
When the code is fixed and ready for a live environment:
|
||||
1. Copy only `docker-compose.yml`, `Dockerfile`, and your code.
|
||||
2. **Do not** copy `docker-compose.override.yml`.
|
||||
3. Run `docker compose up -d`. The container will automatically execute `main.py` and close when finished.
|
||||
@@ -0,0 +1,9 @@
|
||||
services:
|
||||
bank_analysis_excel:
|
||||
volumes:
|
||||
- .:/usr/src/app # Syncs your code for live editing
|
||||
ports:
|
||||
- "5678:5678" # Opens the debugger 'door'
|
||||
tty: true # Keeps terminal active
|
||||
stdin_open: true # Allows interactive input
|
||||
command: tail -f /dev/null # Keeps the workshop open
|
||||
@@ -0,0 +1,4 @@
|
||||
services:
|
||||
bank_analysis_excel:
|
||||
build: .
|
||||
container_name: bank_analysis_excel
|
||||
Reference in New Issue
Block a user