vs code devcontainer

Od ponad roku zdarza mi się często “pokodzić” coś w pythonie a jako, że wcześniej głównie pisałem skrypty w bashu to vim w zupełności mi wystarczał. Tak więc w tym czasie przekonałem się do vs code, pyenva do zarządzania virtualenvami i różnymi wersjami pythona i od jakiegoś czasu również devcontenera.

Jak ktoś nie wie co to to szybciutko: konterer z predefiniowana konfuguracja dla całego środowiska no i vscode oczywiście. Ku pamięci wrzucam co używam lokalnie ale można to oczywiście mega rozbudować co też testowałem w pracy i działa to bardzo płynnie. Od pewnego czasu nawet na applowych procesorach dzięki dodaniu wsparcia dla rosetty działa to na mac os całkiem zgrabnie.

Potrzebujemy oczywiście vscode (https://code.visualstudio.com/docs/setup/linux) + docker:

sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
sudo apt update
sudo apt install docker-ce
sudo usermod -aG docker ${USER}

i dalej w repo w którym chcemy korzystać z devcontenera dodajemy:

vscode ➜ /workspaces/code/devcontainer (master) $ ls -l .devcontainer
total 8
-rw-r--r-- 1 vscode vscode 725 Nov 16 10:51 Dockerfile
-rw-r--r-- 1 vscode vscode 1166 Nov 16 10:46 devcontainer.json

cat .devcontainer/Dockerfile 
#BASE IMAGE
FROM --platform=linux/amd64 mcr.microsoft.com/devcontainers/python:0-3.11

#ENVS
ENV SHELL /usr/bin/zsh

#additional packages
RUN apt update && apt install -y vim

USER vscode
WORKDIR /home/vscode

RUN wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O - | zsh || true
RUN sed -i -e 's/plugins=(git)/plugins=(git vi-mode)/' ~/.zshrc
RUN curl https://pyenv.run | bash
RUN echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
RUN echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
RUN echo 'eval "$(pyenv init -)"' >> ~/.zshrc
ENV HOME  /home/vscode
ENV PYENV_ROOT $HOME/.pyenv
ENV PATH $PYENV_ROOT/shims:$PYENV_ROOT/bin:$PATH
RUN pyenv install 3.12

cat .devcontainer/devcontainer.json 
{
    "build": {
        "dockerfile": "Dockerfile"
    },
    "customizations": {
        "vscode": {
            "extensions": [
                "ms-python.python",
                "njpwerner.autodocstring",
                "eamodio.gitlens",
                "redhat.vscode-yaml",
                "ms-python.isort",
                "ms-python.flake8",
                "ms-python.black-formatter",
                "trond-snekvik.simple-rst",
                "redhat.ansible"
            ],
            "settings": {
                "files.insertFinalNewline": true,
                "editor.formatOnSave": true,
                "flake8.args": [
                    "--ignore=E501,W503,F722"
                ]
            },
            "terminal.integrated.defaultProfile.linux": "zsh",
            "terminal.integrated.profiles.linux": {
                "zsh": {
                    "path": "/usr/bin/zsh"
                }
            }
        }
    },
    "features": {},
    "mounts": [
        "source=${localEnv:HOME}${localEnv:USERPROFILE}/.ssh,target=/home/vscode/.ssh,type=bind,consistency=cached"
    ],
    "name": "pakos",
    "postCreateCommand": ""
}

Bonus: devcontainer cli

➜  devcontainer git:(master) devcontainer
devcontainer <command>

Commands:
  devcontainer open [path]          Open a dev container in VS Code
  devcontainer up                   Create and run dev container
  devcontainer set-up               Set up an existing container as a dev container
  devcontainer build [path]         Build a dev container image
  devcontainer run-user-commands    Run user commands
  devcontainer read-configuration   Read configuration
  devcontainer outdated             Show current and available versions
  devcontainer upgrade              Upgrade lockfile
  devcontainer features             Features commands
  devcontainer templates            Templates commands
  devcontainer exec <cmd> [args..]  Execute a command on a running dev container

Options:
  --help     Show help                                                                                         [boolean]
  --version  Show version number                                                                               [boolean]

devcontainer@0.52.1 /home/pakos/.vscode/extensions/ms-vscode-remote.remote-containers-0.321.0

Not enough non-option arguments: got 0, need at least 1

Leave a comment

Your email address will not be published. Required fields are marked *