{ "name": "Yomitalk Development Environment", "build": { "dockerfile": "Dockerfile.dev", "context": ".." }, "workspaceFolder": "/app", "shutdownAction": "stopContainer", // Features to add to the dev container. More info: https://containers.dev/features. "features": { "ghcr.io/devcontainers/features/git:1": { "version": "latest", "ppa": true }, "ghcr.io/devcontainers/features/github-cli:1": { "version": "latest" }, "ghcr.io/devcontainers/features/node:1": { "version": "20" }, "ghcr.io/anthropics/devcontainer-features/claude-code:1.0": {} }, // Use 'forwardPorts' to make a list of ports inside the container available locally. "forwardPorts": [7860], "portsAttributes": { "7860": { "label": "Yomitalk Web App", "onAutoForward": "notify" } }, // Use 'postCreateCommand' to run commands after the container is created. "postCreateCommand": "bash .devcontainer/setup.sh", // Use root user since the base Dockerfile doesn't create a non-root user // "remoteUser": "root", // Override the default command to keep container running for development "overrideCommand": true, "customizations": { "vscode": { "settings": { "python.defaultInterpreterPath": "/usr/local/bin/python", "python.terminal.activateEnvironment": false, "python.linting.enabled": true, "python.linting.pylintEnabled": false, "python.linting.flake8Enabled": true, "python.linting.mypyEnabled": true, "python.formatting.provider": "black", "python.sortImports.provider": "isort", "python.testing.pytestEnabled": true, "python.testing.pytestArgs": [ "tests/" ], "editor.formatOnSave": true, "editor.codeActionsOnSave": { "source.organizeImports": "explicit" }, "files.exclude": { "**/__pycache__": true, "**/.pytest_cache": true, "**/data/temp": true, "**/data/output": true, "**/voicevox_core": true }, "git.enableCommitSigning": false, "terminal.integrated.defaultProfile.linux": "bash" }, "extensions": [ "ms-python.python", "ms-python.flake8", "ms-python.mypy-type-checker", "ms-python.black-formatter", "ms-python.isort", "ms-toolsai.jupyter", "wholroyd.jinja", "redhat.vscode-yaml", "ms-vscode.makefile-tools", "GitHub.copilot", "GitHub.copilot-chat", "ms-playwright.playwright", "ms-vscode.test-adapter-converter", "littlefoxteam.vscode-python-test-adapter", "streetsidesoftware.code-spell-checker" ] } }, // Environment variables "containerEnv": { "VOICEVOX_ACCEPT_AGREEMENT": "true", "PAGER": "cat", "LESSCHARSET": "utf-8", "E2E_TEST_MODE": "false" }, // Mounts for persistent data and source code "mounts": [ "source=${localWorkspaceFolder},target=/app,type=bind,consistency=cached", "source=yomitalk-data,target=/app/data,type=volume", "source=yomitalk-voicevox,target=/app/voicevox_core,type=volume" ] }