From 2e4cd0b9142d102ba3bf5ac0e36e44061154f6f2 Mon Sep 17 00:00:00 2001 From: Sean Norwood Date: Wed, 13 Apr 2022 16:12:05 +0000 Subject: [PATCH] chore: add devcontainer config for vscode --- .devcontainer/Dockerfile | 28 +++++++++++++++ .devcontainer/devcontainer.json | 64 +++++++++++++++++++++++++++++++++ 2 files changed, 92 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..4594a3a --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,28 @@ +# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.224.3/containers/python-3/.devcontainer/base.Dockerfile + +# [Choice] Python version (use -bullseye variants on local arm64/Apple Silicon): 3, 3.10, 3.9, 3.8, 3.7, 3.6, 3-bullseye, 3.10-bullseye, 3.9-bullseye, 3.8-bullseye, 3.7-bullseye, 3.6-bullseye, 3-buster, 3.10-buster, 3.9-buster, 3.8-buster, 3.7-buster, 3.6-buster +ARG VARIANT="3.10-bullseye" +FROM mcr.microsoft.com/vscode/devcontainers/python:0-${VARIANT} + +# [Choice] Node.js version: none, lts/*, 16, 14, 12, 10 +ARG NODE_VERSION="none" +RUN if [ "${NODE_VERSION}" != "none" ]; then su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"; fi + +RUN sed -i 's/required/sufficient/g' /etc/pam.d/chsh + +# [Optional] If your pip requirements rarely change, uncomment this section to add them to the image. +COPY tubearchivist/requirements.txt /tmp/pip-tmp/ +RUN pip3 --disable-pip-version-check --no-cache-dir install -r /tmp/pip-tmp/requirements.txt \ + && rm -rf /tmp/pip-tmp + +# [Optional] Uncomment this section to install additional OS packages. +RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ + && apt-get -y install --no-install-recommends fish + +ENV SHELL /usr/bin/fish + +USER vscode +RUN fish -c "curl -sL https://git.io/fisher | source && fisher install jorgebucaran/fisher" + +# [Optional] Uncomment this line to install global node packages. +# RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g " 2>&1 \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..b95f57b --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,64 @@ +// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: +// https://github.com/microsoft/vscode-dev-containers/tree/v0.224.3/containers/python-3 +{ + "name": "Python 3", + "build": { + "dockerfile": "Dockerfile", + "context": "..", + "args": { + // Update 'VARIANT' to pick a Python version: 3, 3.10, 3.9, 3.8, 3.7, 3.6 + // Append -bullseye or -buster to pin to an OS version. + // Use -bullseye variants on local on arm64/Apple Silicon. + "VARIANT": "3.10-bullseye", + // Options + "NODE_VERSION": "16" + } + }, + + // Set *default* container specific settings.json values on container create. + "settings": { + "python.defaultInterpreterPath": "/usr/local/bin/python", + "python.linting.enabled": true, + "python.linting.pylintEnabled": true, + "python.formatting.autopep8Path": "/usr/local/py-utils/bin/autopep8", + "python.formatting.blackPath": "/usr/local/py-utils/bin/black", + "python.formatting.yapfPath": "/usr/local/py-utils/bin/yapf", + "python.linting.banditPath": "/usr/local/py-utils/bin/bandit", + "python.linting.flake8Path": "/usr/local/py-utils/bin/flake8", + "python.linting.mypyPath": "/usr/local/py-utils/bin/mypy", + "python.linting.pycodestylePath": "/usr/local/py-utils/bin/pycodestyle", + "python.linting.pydocstylePath": "/usr/local/py-utils/bin/pydocstyle", + "python.linting.pylintPath": "/usr/local/py-utils/bin/pylint", + "typescript.tsdk": "tubearchivist/www/node_modules/typescript/lib", + "terminal.integrated.defaultProfile.linux": "fish" + }, + + // Add the IDs of extensions you want installed when the container is created. + "extensions": [ + "ms-python.python", + "ms-python.vscode-pylance", + "esbenp.prettier-vscode", + "dbaeumer.vscode-eslint", + "eamodio.gitlens", + "batisteo.vscode-django", + "christian-kohler.path-intellisense", + "quicktype.quicktype" + ], + + // Use 'forwardPorts' to make a list of ports inside the container available locally. + "forwardPorts": [3000, 8000], + + // Use 'postCreateCommand' to run commands after the container is created. + "postCreateCommand": "chsh -s /usr/bin/fish && fish -c 'fisher install matchai/spacefish'", + // Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. + "remoteUser": "vscode", + "features": { + // "fish": "latest", + "github-cli": "latest", + "docker-in-docker": { + "version": "latest", + "moby": true + }, + "git": "os-provided" + } +}