File size: 3,216 Bytes
3d4a4e7
 
f945e3e
d93a08f
f945e3e
 
 
 
3d4a4e7
 
 
 
 
 
 
 
 
870a3d5
 
 
 
 
3d4a4e7
 
f945e3e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3d4a4e7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f945e3e
3d4a4e7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f945e3e
3d4a4e7
f945e3e
 
 
3d4a4e7
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
{
  "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"
  ]
}