// 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.241.1/containers/python-3 { "name": "InvenTree", "build": { "dockerfile": "../Dockerfile", "context": "..", "target": "devcontainer", "args": { "base_image": "mcr.microsoft.com/vscode/devcontainers/base:alpine-3.18", "workspace": "${containerWorkspaceFolder}" } }, // Configure tool-specific properties. "customizations": { // Configure properties specific to VS Code. "vscode": { // Set *default* container specific settings.json values on container create. "settings": { "python.defaultInterpreterPath": "${containerWorkspaceFolder}/dev/venv/bin/python", "python.linting.enabled": true, "python.linting.pylintEnabled": false, "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.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" }, // Add the IDs of extensions you want installed when the container is created. "extensions": [ "ms-python.python", "ms-python.vscode-pylance", "batisteo.vscode-django", "eamodio.gitlens" ] } }, // Use 'forwardPorts' to make a list of ports inside the container available locally. "forwardPorts": [5173, 8000], "portsAttributes": { "5173": { "label": "Vite server" }, "8000": { "label": "InvenTree server" } }, // Use 'postCreateCommand' to run commands after the container is created. "postCreateCommand": "./.devcontainer/postCreateCommand.sh ${containerWorkspaceFolder}", // Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. "remoteUser": "vscode", "containerUser": "vscode", "remoteEnv": { // InvenTree config "INVENTREE_DEBUG": "True", "INVENTREE_LOG_LEVEL": "INFO", "INVENTREE_DB_ENGINE": "sqlite3", "INVENTREE_DB_NAME": "${containerWorkspaceFolder}/dev/database.sqlite3", "INVENTREE_MEDIA_ROOT": "${containerWorkspaceFolder}/dev/media", "INVENTREE_STATIC_ROOT": "${containerWorkspaceFolder}/dev/static", "INVENTREE_BACKUP_DIR": "${containerWorkspaceFolder}/dev/backup", "INVENTREE_CONFIG_FILE": "${containerWorkspaceFolder}/dev/config.yaml", "INVENTREE_SECRET_KEY_FILE": "${containerWorkspaceFolder}/dev/secret_key.txt", "INVENTREE_PLUGINS_ENABLED": "True", "INVENTREE_PLUGIN_DIR": "${containerWorkspaceFolder}/dev/plugins", "INVENTREE_PLUGIN_FILE": "${containerWorkspaceFolder}/dev/plugins.txt", // Python config "PIP_USER": "no", // used to load the venv into the PATH and activate it // Ref: https://stackoverflow.com/a/56286534 "VIRTUAL_ENV": "${containerWorkspaceFolder}/dev/venv", "PATH": "${containerWorkspaceFolder}/dev/venv/bin:${containerEnv:PATH}" } }