{ "name": "Data Science Web App", "build": { "dockerfile": "Dockerfile", "context": "..", "args": { "INSTALL_R": "true", "INSTALL_OPENCPU": "true", "DEV_MODE": "true" } }, "mounts": [ "source=poetry-cache,target=/app/.venv,type=volume" ], "forwardPorts": [ 7860 ], "containerEnv": { "DEV_MODE": "true" }, "postCreateCommand": "poetry lock && poetry install --no-interaction --no-ansi --with dev,data,ml,demo", "postStartCommand": "scripts/entrypoint.sh && mkdir -p ~/.vscode-server/data/Machine", "customizations": { "vscode": { "extensions": [ "ms-python.python", "ms-python.vscode-pylance", "adrianwilczynski.alpine-js-intellisense", "bradlc.vscode-tailwindcss", "tamasfe.even-better-toml", "reditorsupport.r", "wholroyd.jinja", "formulahendry.code-runner", "ms-azuretools.vscode-docker", "eamodio.gitlens", "otovo-oss.htmx-tags", "csstools.postcss", "dbaeumer.vscode-eslint", "esbenp.prettier-vscode", "samuelcolvin.jinjahtml", "monosans.djlint", "ms-toolsai.jupyter", "ms-python.black-formatter", "naumovs.color-highlight" ], "settings": { "python.defaultInterpreterPath": "/app/.venv/bin/python", "terminal.integrated.shell.linux": "/bin/bash", "python.linting.enabled": true, "python.linting.pylintEnabled": true, "python.formatting.provider": "black", "editor.formatOnSave": true, "editor.defaultFormatter": "esbenp.prettier-vscode", "[python]": { "editor.defaultFormatter": "ms-python.python" }, "editor.codeActionsOnSave": { "source.sortImports": "explicit" }, "terminal.integrated.defaultProfile.linux": "bash", "terminal.integrated.profiles.linux": { "Apache Server": { "path": "apachectl", "args": [ "-DFOREGROUND" ] }, "Uvicorn Server": { "path": "poetry run uvicorn", "args": [ "src.main:app", "--host", "0.0.0.0", "--port", "7860", "--reload", "--reload-include", "./src/", "--reload-exclude", "*.db" ] }, "Edit Demo Marimo Notebook": { "path": "poetry run marimo", "args": [ "edit", "/app/notebooks/marimo-demo.py", "--host", "0.0.0.0", "--port", "8080", "--headless" ] }, "Tailwind CSS": { "path": "/app/bin/tailwindcss", "args": [ "-i", "/app/public/styles/input.css", "-o", "/app/public/styles/output.css", "--watch=always", "--poll" ] }, "AI Digest": { "path": "npx", "args": [ "--yes", "ai-digest" ] } } } } }, "workspaceMount": "source=${localWorkspaceFolder},target=/app,type=bind,consistency=delegated", "workspaceFolder": "/app" }