From 6a370c224495c086acd543c656a4432e62ef039e Mon Sep 17 00:00:00 2001 From: Galdin Raphael Date: Wed, 26 Mar 2025 23:19:16 +0000 Subject: [PATCH 1/3] Setup a single devcontainer So that the entire setup could be run out of a single VS Code instance. TODO: get rust working --- .devcontainer/Dockerfile | 34 +++++++++++++++++++++++++++ .devcontainer/devcontainer.json | 41 +++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/devcontainer.json diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000..3626be3 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,34 @@ +ARG UV_VERSION=latest +ARG DEBIAN_VERSION=bookworm + + +FROM ghcr.io/astral-sh/uv:$UV_VERSION AS uv + + +FROM mcr.microsoft.com/vscode/devcontainers/base:$DEBIAN_VERSION + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + # For OpenCV etc... + libgl1 libglib2.0-0 \ + # For protobuf + protobuf-compiler \ + # nodejs dependencies + curl gnupg \ + # To remove the image size, it is recommended refresh the package cache as follows + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + + +# Install Node +RUN curl -sL https://deb.nodesource.com/setup_22.x | bash - \ + && apt-get install nodejs -y \ + && corepack enable pnpm + + +# # Get Rust +# RUN curl https://sh.rustup.rs -sSf | bash -s -- -y \ +# && echo "source $HOME/.cargo/env" >> $HOME/.bashrc \ +# && source $HOME/.cargo/env + +COPY --from=uv --chown=vscode: /uv /uvx /bin/ diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..723e839 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,41 @@ +{ + "name": "scale", + "build": { + "context": "..", + "dockerfile": "Dockerfile", + "args": { + "UV_VERSION": "0.6.9", + "DEBIAN_VERSION": "bookworm" + } + }, + "features": { + "ghcr.io/dhoeric/features/hadolint:1": {} + }, + "customizations": { + "vscode": { + "extensions": [ + "charliermarsh.ruff", + "exiasr.hadolint", + "kevinrose.vsc-python-indent", + "mosapride.zenkaku", + "ms-azuretools.vscode-docker", + "ms-python.python", + "ms-toolsai.jupyter", + "njpwerner.autodocstring", + "redhat.vscode-yaml", + "shardulm94.trailing-spaces", + "tamasfe.even-better-toml", + "mechatroner.rainbow-csv", + "ms-toolsai.datawrangler", + "tooltitudeteam.tooltitude-pb" + ] + } + }, + "containerEnv": { + "DISPLAY": "dummy", + "PYTHONUNBUFFERED": "True", + "UV_LINK_MODE": "copy" + }, + // "postCreateCommand": "./post-create.sh", + "remoteUser": "vscode" +} From 9c1c60944b2ddb31ce3ee30c2d73f4d31e732a22 Mon Sep 17 00:00:00 2001 From: Galdin Raphael Date: Thu, 27 Mar 2025 23:19:16 +0000 Subject: [PATCH 2/3] Get all dev dependencies working in the dev container Remove original dev containers --- .devcontainer/Dockerfile | 8 +--- apps/pyworker/.devcontainer/Dockerfile | 20 --------- apps/pyworker/.devcontainer/devcontainer.json | 35 --------------- apps/reactapp/.devcontainer/devcontainer.json | 22 ---------- apps/webapi/.devcontainer/Dockerfile | 11 ----- apps/webapi/.devcontainer/devcontainer.json | 44 ------------------- 6 files changed, 1 insertion(+), 139 deletions(-) delete mode 100644 apps/pyworker/.devcontainer/Dockerfile delete mode 100644 apps/pyworker/.devcontainer/devcontainer.json delete mode 100644 apps/reactapp/.devcontainer/devcontainer.json delete mode 100644 apps/webapi/.devcontainer/Dockerfile delete mode 100644 apps/webapi/.devcontainer/devcontainer.json diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 3626be3..67a63a9 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -5,7 +5,7 @@ ARG DEBIAN_VERSION=bookworm FROM ghcr.io/astral-sh/uv:$UV_VERSION AS uv -FROM mcr.microsoft.com/vscode/devcontainers/base:$DEBIAN_VERSION +FROM mcr.microsoft.com/vscode/devcontainers/rust:$DEBIAN_VERSION RUN apt-get update \ && apt-get install -y --no-install-recommends \ @@ -25,10 +25,4 @@ RUN curl -sL https://deb.nodesource.com/setup_22.x | bash - \ && apt-get install nodejs -y \ && corepack enable pnpm - -# # Get Rust -# RUN curl https://sh.rustup.rs -sSf | bash -s -- -y \ -# && echo "source $HOME/.cargo/env" >> $HOME/.bashrc \ -# && source $HOME/.cargo/env - COPY --from=uv --chown=vscode: /uv /uvx /bin/ diff --git a/apps/pyworker/.devcontainer/Dockerfile b/apps/pyworker/.devcontainer/Dockerfile deleted file mode 100644 index 5691fab..0000000 --- a/apps/pyworker/.devcontainer/Dockerfile +++ /dev/null @@ -1,20 +0,0 @@ -ARG UV_VERSION=latest -ARG DEBIAN_VERSION=bookworm - - -FROM ghcr.io/astral-sh/uv:$UV_VERSION AS uv - - -FROM mcr.microsoft.com/vscode/devcontainers/base:$DEBIAN_VERSION - -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - # For OpenCV etc... - libgl1 libglib2.0-0 \ - # For protobuf - protobuf-compiler \ - # To remove the image size, it is recommended refresh the package cache as follows - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* - -COPY --from=uv --chown=vscode: /uv /uvx /bin/ diff --git a/apps/pyworker/.devcontainer/devcontainer.json b/apps/pyworker/.devcontainer/devcontainer.json deleted file mode 100644 index 6752c8a..0000000 --- a/apps/pyworker/.devcontainer/devcontainer.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "scale-pyworker (python)", - "build": { - "context": "..", - "dockerfile": "Dockerfile", - "args": { - "UV_VERSION": "0.6.6", - "DEBIAN_VERSION": "bookworm" - } - }, - "customizations": { - "vscode": { - "extensions": [ - "kevinrose.vsc-python-indent", - "mosapride.zenkaku", - "ms-azuretools.vscode-docker", - "ms-python.python", - "ms-toolsai.jupyter", - "njpwerner.autodocstring", - "redhat.vscode-yaml", - "shardulm94.trailing-spaces", - "tamasfe.even-better-toml", - "mechatroner.rainbow-csv", - "tooltitudeteam.tooltitude-pb" - ] - } - }, - "containerEnv": { - "DISPLAY": "dummy", - "PYTHONUNBUFFERED": "True", - "UV_LINK_MODE": "copy" - }, - "postCreateCommand": "uv sync --frozen", - "remoteUser": "vscode" -} diff --git a/apps/reactapp/.devcontainer/devcontainer.json b/apps/reactapp/.devcontainer/devcontainer.json deleted file mode 100644 index 66fdc3f..0000000 --- a/apps/reactapp/.devcontainer/devcontainer.json +++ /dev/null @@ -1,22 +0,0 @@ -// For format details, see https://aka.ms/devcontainer.json. For config options, see the -// README at: https://github.com/devcontainers/templates/tree/main/src/javascript-node -{ - "name": "Node.js", - // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile - "image": "mcr.microsoft.com/devcontainers/javascript-node:1-22-bookworm" - - // Features to add to the dev container. More info: https://containers.dev/features. - // "features": {}, - - // Use 'forwardPorts' to make a list of ports inside the container available locally. - // "forwardPorts": [], - - // Use 'postCreateCommand' to run commands after the container is created. - // "postCreateCommand": "yarn install", - - // Configure tool-specific properties. - // "customizations": {}, - - // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. - // "remoteUser": "root" -} diff --git a/apps/webapi/.devcontainer/Dockerfile b/apps/webapi/.devcontainer/Dockerfile deleted file mode 100644 index 0f43e51..0000000 --- a/apps/webapi/.devcontainer/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -ARG IMAGE_TAG=latest - -FROM mcr.microsoft.com/devcontainers/rust:$IMAGE_TAG - -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - # For protobuf - protobuf-compiler \ - # To remove the image size, it is recommended refresh the package cache as follows - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* diff --git a/apps/webapi/.devcontainer/devcontainer.json b/apps/webapi/.devcontainer/devcontainer.json deleted file mode 100644 index 055390c..0000000 --- a/apps/webapi/.devcontainer/devcontainer.json +++ /dev/null @@ -1,44 +0,0 @@ -// For format details, see https://aka.ms/devcontainer.json. For config options, see the -// README at: https://github.com/devcontainers/templates/tree/main/src/rust -{ - "name": "scale-webapi (Rust)", - "build": { - "context": "..", - "dockerfile": "Dockerfile", - "args": { - "IMAGE_TAG": "1-1-bookworm" - } - }, - "customizations": { - "vscode": { - "extensions": [ - "tooltitudeteam.tooltitude-pb", - "ms-azuretools.vscode-docker" - ] - } - } - - // Use 'mounts' to make the cargo cache persistent in a Docker Volume. - // "mounts": [ - // { - // "source": "devcontainer-cargo-cache-${devcontainerId}", - // "target": "/usr/local/cargo", - // "type": "volume" - // } - // ] - - // Features to add to the dev container. More info: https://containers.dev/features. - // "features": {}, - - // Use 'forwardPorts' to make a list of ports inside the container available locally. - // "forwardPorts": [], - - // Use 'postCreateCommand' to run commands after the container is created. - // "postCreateCommand": "rustc --version", - - // Configure tool-specific properties. - // "customizations": {}, - - // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. - // "remoteUser": "root" -} From 84d38a0b4f906b25234e97ab43e24ac8dbcae760 Mon Sep 17 00:00:00 2001 From: Galdin Raphael Date: Fri, 28 Mar 2025 18:47:54 +0000 Subject: [PATCH 3/3] Get everything working --- .devcontainer/devcontainer.json | 2 +- .devcontainer/post-create.sh | 2 + {notebooks/.vscode => .vscode}/settings.json | 0 apps/pyworker/.vscode/settings.json | 7 ---- notebooks/.devcontainer/Dockerfile | 19 ---------- notebooks/.devcontainer/devcontainer.json | 40 -------------------- 6 files changed, 3 insertions(+), 67 deletions(-) create mode 100755 .devcontainer/post-create.sh rename {notebooks/.vscode => .vscode}/settings.json (100%) delete mode 100644 apps/pyworker/.vscode/settings.json delete mode 100644 notebooks/.devcontainer/Dockerfile delete mode 100644 notebooks/.devcontainer/devcontainer.json diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 723e839..f6f1587 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -36,6 +36,6 @@ "PYTHONUNBUFFERED": "True", "UV_LINK_MODE": "copy" }, - // "postCreateCommand": "./post-create.sh", + "postCreateCommand": "./.devcontainer/post-create.sh", "remoteUser": "vscode" } diff --git a/.devcontainer/post-create.sh b/.devcontainer/post-create.sh new file mode 100755 index 0000000..bccd96b --- /dev/null +++ b/.devcontainer/post-create.sh @@ -0,0 +1,2 @@ +cd ./notebooks && uv sync --frozen && cd .. +cd ./apps/pyworker && uv sync --frozen && cd .. diff --git a/notebooks/.vscode/settings.json b/.vscode/settings.json similarity index 100% rename from notebooks/.vscode/settings.json rename to .vscode/settings.json diff --git a/apps/pyworker/.vscode/settings.json b/apps/pyworker/.vscode/settings.json deleted file mode 100644 index 8b20fd9..0000000 --- a/apps/pyworker/.vscode/settings.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "explorer.fileNesting.patterns": { - "pyproject.toml": "uv.lock, .python-version", - "settings.yaml": ".secrets.yaml" - }, - "explorer.fileNesting.enabled": true -} \ No newline at end of file diff --git a/notebooks/.devcontainer/Dockerfile b/notebooks/.devcontainer/Dockerfile deleted file mode 100644 index f13e6dc..0000000 --- a/notebooks/.devcontainer/Dockerfile +++ /dev/null @@ -1,19 +0,0 @@ -ARG UV_VERSION=latest -ARG DEBIAN_VERSION=bookworm - - -FROM ghcr.io/astral-sh/uv:$UV_VERSION AS uv - - -FROM mcr.microsoft.com/vscode/devcontainers/base:$DEBIAN_VERSION - -# hadolint ignore=DL3008 -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - # For OpenCV etc... - libgl1 libglib2.0-0 \ - # To remove the image size, it is recommended refresh the package cache as follows - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* - -COPY --from=uv --chown=vscode: /uv /uvx /bin/ diff --git a/notebooks/.devcontainer/devcontainer.json b/notebooks/.devcontainer/devcontainer.json deleted file mode 100644 index 8e9ddad..0000000 --- a/notebooks/.devcontainer/devcontainer.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "scale-notebooks (Jupyter)", - "build": { - "context": "..", - "dockerfile": "Dockerfile", - "args": { - "UV_VERSION": "0.6.5", - "DEBIAN_VERSION": "bookworm" - } - }, - "features": { - "ghcr.io/dhoeric/features/hadolint:1": {} - }, - "customizations": { - "vscode": { - "extensions": [ - "charliermarsh.ruff", - "exiasr.hadolint", - "kevinrose.vsc-python-indent", - "mosapride.zenkaku", - "ms-azuretools.vscode-docker", - "ms-python.python", - "ms-toolsai.jupyter", - "njpwerner.autodocstring", - "redhat.vscode-yaml", - "shardulm94.trailing-spaces", - "tamasfe.even-better-toml", - "mechatroner.rainbow-csv", - "ms-toolsai.datawrangler" - ] - } - }, - "containerEnv": { - "DISPLAY": "dummy", - "PYTHONUNBUFFERED": "True", - "UV_LINK_MODE": "copy" - }, - "postCreateCommand": "uv sync --frozen", - "remoteUser": "vscode" -}