From e392fc382b3017ef5409c138959416286337fa45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cosmin=20=C8=98tefan=20Ciocan?= <57830279+cosminc98@users.noreply.github.com> Date: Sat, 13 Jan 2024 00:46:30 +0000 Subject: [PATCH] Create devcontainer for quick dev setups --- .devcontainer/Dockerfile | 19 +++++++++++++++++++ .devcontainer/devcontainer.json | 26 ++++++++++++++++++++++++++ .devcontainer/post_create.sh | 7 +++++++ 3 files changed, 52 insertions(+) create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/devcontainer.json create mode 100644 .devcontainer/post_create.sh diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000..9088efc --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,19 @@ +FROM ubuntu + +ARG VENV_PATH=/opt/dev-venv +ENV VENV_ACTIVATE=${VENV_PATH}/bin/activate + +RUN apt update +RUN apt install -y python3.10-venv nvidia-cuda-toolkit gcc vim git + +# the mkdir command bypasses a profiler error, which allows us to run it with +# host code only to at least check that the profiler parameters are correctly +# provided; without this line, some tests will fail +RUN mkdir -p /usr/lib/x86_64-linux-gnu/nsight-compute/sections + +# we create the virtualenv here so that the devcontainer.json setting +# python.defaultInterpreterPath can be used to find it; if we do it in the +# post_create.sh script, the virtualenv will not be loaded and features like +# pylance, black, isort, etc. will not work +RUN python3.10 -m venv ${VENV_PATH} +RUN echo "source ${VENV_ACTIVATE}" >> ~/.bashrc diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..c6e997c --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,26 @@ +{ + "name": "Python Environment", + "build": { + "dockerfile": "Dockerfile", + "context": ".." + }, + "postCreateCommand": "bash .devcontainer/post_create.sh", + "customizations": { + "vscode": { + "extensions": [ + "editorconfig.editorconfig", + "ms-azuretools.vscode-docker", + "ms-python.python", + "ms-python.vscode-pylance", + "ms-python.pylint", + "ms-python.isort", + "ms-python.flake8", + "ms-python.black-formatter", + "ryanluker.vscode-coverage-gutters" + ], + "settings": { + "python.defaultInterpreterPath": "/opt/dev-venv/bin/python" + } + } + } +} diff --git a/.devcontainer/post_create.sh b/.devcontainer/post_create.sh new file mode 100644 index 0000000..15fd069 --- /dev/null +++ b/.devcontainer/post_create.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +# install developer dependencies +pip install .[dev] + +# make sure the developer uses pre-commit hooks +pre-commit install