Files
mongo/.devcontainer/devcontainer.json
Eric Lavigne 0be3db5ba5 SERVER-110680: Add initial devcontainer setup (#41171)
Co-authored-by: Ivan Fefer <ivan.fefer@mongodb.com>
GitOrigin-RevId: f6ac78093d8fa33d34719d46f7ea08c2442cda4d
2025-09-18 18:49:45 +00:00

128 lines
4.3 KiB
JSON

{
"name": "MongoDB Development Container",
"build": {
"dockerfile": "./Dockerfile",
"context": "..",
"args": {
"USERNAME": "${localEnv:USER}"
}
},
"mounts": [
{
"source": "engflow_auth",
"target": "/home/${localEnv:USER}/.config/engflow_auth",
"type": "volume"
},
{
"source": "${containerWorkspaceFolderBasename}-cache",
"target": "/home/${localEnv:USER}/.cache",
"type": "volume"
},
{
"source": "projectname-bashhistory",
"target": "/commandhistory",
"type": "volume"
}
],
"containerEnv": {
"HOME": "/home/${localEnv:USER}"
},
"remoteUser": "${localEnv:USER}",
"containerUser": "${localEnv:USER}",
"features": {
"./features/workstation": {},
"ghcr.io/devcontainers/features/git:1": {},
"ghcr.io/devcontainers-community/features/bazel:1": {},
"ghcr.io/devcontainers/features/common-utils:2": {
"username": "${localEnv:USER}"
}
},
"postCreateCommand": {
"fixVolumePerms": "sudo chown -R $(whoami): ${containerEnv:HOME}/.config/engflow_auth && sudo chown -R $(whoami): ${containerEnv:HOME}/.cache",
"venvActivation": "echo 'source ${containerWorkspaceFolder}/python3-venv/bin/activate && ${containerWorkspaceFolder}/buildscripts/poetry_sync.sh' >> ~/.bashrc && echo 'source ${containerWorkspaceFolder}/python3-venv/bin/activate && ${containerWorkspaceFolder}/buildscripts/poetry_sync.sh' >> ~/.zshrc;",
"createDataDir": "sudo mkdir -p /data/db && sudo chown -R $(whoami): /data/db"
},
"customizations": {
"vscode": {
"settings": {
"clangd.checkUpdates": true,
"clangd.path": "${workspaceFolder}/buildscripts/clangd_vscode.sh",
"clang-format.executable": "${workspaceRoot}/bazel-out/../../../external/mongo_toolchain_v5/v5/bin/clang-format",
"prettier.prettierPath": "bazel-bin/node_modules/.aspect_rules_js/prettier@3.4.2/node_modules/prettier",
"clang-tidy.executable": "buildscripts/clang_tidy_vscode.py",
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit"
},
"eslint.validate": [
"javascript"
],
"files.associations": {
"*.idl": "yaml"
},
"files.insertFinalNewline": true,
"js/ts.implicitProjectConfig.target": "ES2020",
"python.autoComplete.extraPaths": [
"/opt/mongodbtoolchain/v5/share/gcc-14.2.0/python"
],
"python.defaultInterpreterPath": "python3-venv/bin/python",
"python.analysis.extraPaths": [
"/opt/mongodbtoolchain/v5/share/gcc-14.2.0/python"
],
"mypy-type-checker.path": [
"${interpreter}",
"-m",
"mypy"
],
"mypy-type-checker.importStrategy": "fromEnvironment",
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[c]": {
"editor.defaultFormatter": "xaver.clang-format",
"editor.formatOnSave": true
},
"[cpp]": {
"editor.defaultFormatter": "xaver.clang-format",
"editor.formatOnSave": true
},
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
},
"[python]": {
"editor.formatOnSaveMode": "file",
"editor.formatOnSave": true,
"editor.defaultFormatter": "charliermarsh.ruff"
},
"[starlark]": {
"editor.defaultFormatter": "BazelBuild.vscode-bazel"
},
"terminal.integrated.wordSeparators": " ()[]{}',\"`─‘’@",
"yaml.schemas": {
"./buildscripts/idl/idl_schema.yml": [
"*.idl"
]
},
"C_Cpp.intelliSenseEngine": "disabled"
},
"extensions": {
"recommendations": [
"llvm-vs-code-extensions.vscode-clangd",
"dbaeumer.vscode-eslint",
"ms-python.python",
"xaver.clang-format",
"cs128.cs128-clang-tidy",
"charliermarsh.ruff",
"ms-python.mypy-type-checker",
"esbenp.prettier-vscode",
"redhat.vscode-yaml",
"streetsidesoftware.code-spell-checker",
"jasonnutter.vscode-codeowners",
"bazelbuild.vscode-bazel",
"rioj7.command-variable",
"augustocdias.tasks-shell-input",
"ms-vscode.cpptools"
]
}
}
}
}