From 40ac07ac23488bf99ac358bbca4597e5e0051035 Mon Sep 17 00:00:00 2001 From: Guillaume Campagna Date: Mon, 22 Sep 2025 02:27:13 +0000 Subject: [PATCH 1/2] Add dev container --- .devcontainer/Dockerfile | 36 +++++++++++++++++++++++++ .devcontainer/devcontainer.json | 46 ++++++++++++++++++++++++++++++++ .devcontainer/docker-compose.yml | 19 +++++++++++++ 3 files changed, 101 insertions(+) create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/devcontainer.json create mode 100644 .devcontainer/docker-compose.yml diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000..845ddb6 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,36 @@ +FROM python:3.13-slim + +# Install system dependencies +RUN apt-get update && apt-get install -y \ + git \ + curl \ + wget \ + sudo \ + build-essential \ + && rm -rf /var/lib/apt/lists/* + +# Create vscode user +RUN groupadd --gid 1000 vscode \ + && useradd --uid 1000 --gid vscode --shell /bin/bash --create-home vscode \ + && echo vscode ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/vscode \ + && chmod 0440 /etc/sudoers.d/vscode + +# Add vscode user to dialout group for serial port access +RUN usermod -a -G dialout vscode + +# Set up working directory +WORKDIR /workspace + +# Copy requirements first for better caching +COPY requirements.txt requirements-dev.txt ./ + +# Install Python dependencies +RUN pip install --upgrade pip \ + && pip install -r requirements.txt \ + && pip install -r requirements-dev.txt + +# Switch to vscode user +USER vscode + +# Set up shell +RUN echo 'export PATH="/home/vscode/.local/bin:$PATH"' >> /home/vscode/.bashrc \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..2afdd83 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,46 @@ +{ + "name": "Python Protocol Gateway Dev Environment", + "dockerComposeFile": "docker-compose.yml", + "service": "dev", + "workspaceFolder": "/workspace", + "shutdownAction": "stopCompose", + "postCreateCommand": "pip install -r requirements-dev.txt", + "customizations": { + "vscode": { + "extensions": [ + "ms-python.python", + "ms-python.flake8", + "charliermarsh.ruff", + "ms-python.pylint", + "ms-vscode.vscode-json", + "ms-python.debugpy", + "GitHub.copilot", + "redhat.vscode-yaml" + ], + "settings": { + "python.defaultInterpreterPath": "/usr/local/bin/python", + "python.linting.enabled": true, + "python.linting.flake8Enabled": true, + "python.formatting.provider": "none", + "[python]": { + "editor.defaultFormatter": "charliermarsh.ruff", + "editor.formatOnSave": true, + "editor.codeActionsOnSave": { + "source.fixAll.ruff": true + } + }, + "python.testing.pytestEnabled": true, + "python.testing.unittestEnabled": false, + "python.testing.pytestArgs": [ + "." + ], + "terminal.integrated.defaultProfile.linux": "bash" + } + } + }, + "forwardPorts": [1883, 8086], + "mounts": [ + "source=${localWorkspaceFolder},target=/workspace,type=bind,consistency=cached" + ], + "remoteUser": "vscode" +} \ No newline at end of file diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml new file mode 100644 index 0000000..757f754 --- /dev/null +++ b/.devcontainer/docker-compose.yml @@ -0,0 +1,19 @@ +version: '3.8' + +services: + dev: + build: + context: .. + dockerfile: .devcontainer/Dockerfile + volumes: + - ..:/workspace:cached + - /var/run/docker.sock:/var/run/docker.sock + devices: + - /dev/ttyUSB0:/dev/ttyUSB0 + privileged: true + network_mode: host + environment: + - PYTHONPATH=/workspace + - PYTHONUNBUFFERED=1 + working_dir: /workspace + command: sleep infinity \ No newline at end of file From bec9bcffabf97d71bb45f378d0b58d0c93547f16 Mon Sep 17 00:00:00 2001 From: Guillaume Campagna Date: Mon, 22 Sep 2025 03:00:58 +0000 Subject: [PATCH 2/2] Add clarification comment --- .devcontainer/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml index 757f754..b17590f 100644 --- a/.devcontainer/docker-compose.yml +++ b/.devcontainer/docker-compose.yml @@ -9,7 +9,7 @@ services: - ..:/workspace:cached - /var/run/docker.sock:/var/run/docker.sock devices: - - /dev/ttyUSB0:/dev/ttyUSB0 + - /dev/ttyUSB0:/dev/ttyUSB0 # Adjust as necessary privileged: true network_mode: host environment: