Files
mongo/.devcontainer/devcontainer.json
Eric Lavigne 6686b37edf SERVER-112646: Set up eslint and node for devcontainer (#42978)
GitOrigin-RevId: c8344da5d8706f97b6806a364593cafc11444001
2025-10-23 14:17:04 +00:00

141 lines
5.1 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": "mongo-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/docker-outside-of-docker:1": {},
"ghcr.io/devcontainers/features/node:1": {
"version": "lts"
},
"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",
"installNodeModules": "bazel run @pnpm//:pnpm -- --dir ${containerWorkspaceFolder} install",
"reportDockerServerPlatform": "echo \"\ncommon --bes_keywords=devcontainer:docker_server_platform=$(docker version --format '\"{{.Server.Platform.Name}}\"')\" >> ${containerEnv:HOME}/.bazelrc",
"reportDockerServerVersion": "echo \"\ncommon --bes_keywords=devcontainer:docker_server_version=$(docker version --format '\"{{.Server.Version}}\"')\" >> ${containerEnv:HOME}/.bazelrc",
"reportArch": "echo \"\ncommon --bes_keywords=devcontainer:arch=$(uname -i)\" >> ${containerEnv:HOME}/.bazelrc",
"fetchTags": "git fetch --tags || true"
},
"shutdownAction": "none",
"portsAttributes": {
"*": {
"requireLocalPort": true
}
},
"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": [
"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"
]
}
}
}