From e31cb3c502239a9f992a729f3934ad5cceb2fc0d Mon Sep 17 00:00:00 2001 From: LuPeng-Sensetime Date: Fri, 15 Aug 2025 21:39:38 +0800 Subject: [PATCH 1/3] Create devcontainer.json --- .devcontainer/devcontainer.json | 79 +++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 .devcontainer/devcontainer.json diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 00000000..de42dadf --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,79 @@ +{ + "name": "Ubuntu Development Environment", + "dockerComposeFile": [ + "docker-compose.yml" + ], + "service": "app", + "workspaceFolder": "/workspace", + + // 主要开发容器配置 + "customizations": { + "vscode": { + "extensions": [ + "ms-vscode.vscode-json", + "ms-python.python", + "ms-vscode.cpptools", + "bradlc.vscode-tailwindcss", + "esbenp.prettier-vscode" + ], + "settings": { + "terminal.integrated.defaultProfile.linux": "bash", + "editor.formatOnSave": true + } + } + }, + + // 容器创建后执行的命令 + "postCreateCommand": "sudo apt-get update && sudo apt-get install -y git curl wget vim", + + // 开发容器的特性 + "features": { + "ghcr.io/devcontainers/features/common-utils:2": { + "installZsh": true, + "installOhMyZsh": true, + "upgradePackages": true + }, + "ghcr.io/devcontainers/features/docker-in-docker:2": { + "version": "latest" + }, + "ghcr.io/devcontainers/features/node:1": { + "version": "lts" + }, + "ghcr.io/devcontainers/features/python:1": { + "version": "3.11" + } + }, + + // 端口转发 + "forwardPorts": [3000, 8080, 5432], + "portsAttributes": { + "3000": { + "label": "Frontend", + "onAutoForward": "notify" + }, + "8080": { + "label": "Backend API", + "onAutoForward": "notify" + }, + "5432": { + "label": "PostgreSQL", + "onAutoForward": "silent" + } + }, + + // 挂载设置 + "mounts": [ + "source=${localWorkspaceFolder}/.devcontainer,target=/workspace/.devcontainer,type=bind,consistency=cached", + "source=devcontainer-home,target=/home/vscode,type=volume" + ], + + // 容器用户设置 + "remoteUser": "vscode", + "containerUser": "vscode", + + // 环境变量 + "remoteEnv": { + "WORKSPACE": "/workspace", + "NODE_ENV": "development" + } +} From 7c03ed7b7edd4a20197cb66c6a9257c357d726b2 Mon Sep 17 00:00:00 2001 From: LuPeng-Sensetime Date: Fri, 15 Aug 2025 21:45:16 +0800 Subject: [PATCH 2/3] Create docker-compose.yml --- .devcontainer/docker-compose.yml | 85 ++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 .devcontainer/docker-compose.yml diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml new file mode 100644 index 00000000..0e056a2d --- /dev/null +++ b/.devcontainer/docker-compose.yml @@ -0,0 +1,85 @@ +version: '3.8' + +services: + # 主要开发容器 - 基于 Ubuntu + app: + image: mcr.microsoft.com/devcontainers/base:ubuntu-22.04 + volumes: + - ..:/workspace:cached + - devcontainer-home:/home/vscode + + # 保持容器运行 + command: sleep infinity + + # 网络设置 + networks: + - dev-network + + # 环境变量 + environment: + - CONTAINER_NAME=app + - NODE_ENV=development + + # 端口映射 + ports: + - "3000:3000" + - "8080:8080" + + # 依赖关系 + depends_on: + - database + + # 特权和能力 + privileged: true + cap_add: + - SYS_PTRACE + security_opt: + - seccomp:unconfined + + # 数据库容器 - PostgreSQL + database: + image: postgres:15-alpine + restart: unless-stopped + + # 数据持久化 + volumes: + - postgres-data:/var/lib/postgresql/data + - ./init-scripts:/docker-entrypoint-initdb.d + + # 网络设置 + networks: + - dev-network + + # 环境变量 + environment: + POSTGRES_DB: devdb + POSTGRES_USER: devuser + POSTGRES_PASSWORD: devpass + POSTGRES_INITDB_ARGS: "--encoding=UTF-8" + + # 端口映射 + ports: + - "5432:5432" + + # 健康检查 + healthcheck: + test: ["CMD-SHELL", "pg_isready -U devuser -d devdb"] + interval: 30s + timeout: 10s + retries: 5 + start_period: 30s + +# 网络定义 +networks: + dev-network: + driver: bridge + ipam: + config: + - subnet: 172.20.0.0/16 + +# 卷定义 +volumes: + devcontainer-home: + name: devcontainer-home + postgres-data: + name: postgres-data From be46e87aaa1db516576bbc6fb606bb955a70c646 Mon Sep 17 00:00:00 2001 From: LuPeng-Sensetime Date: Fri, 15 Aug 2025 21:55:41 +0800 Subject: [PATCH 3/3] Update devcontainer.json --- .devcontainer/devcontainer.json | 79 +-------------------------------- 1 file changed, 2 insertions(+), 77 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index de42dadf..a8e0782c 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,79 +1,4 @@ { - "name": "Ubuntu Development Environment", - "dockerComposeFile": [ - "docker-compose.yml" - ], - "service": "app", - "workspaceFolder": "/workspace", - - // 主要开发容器配置 - "customizations": { - "vscode": { - "extensions": [ - "ms-vscode.vscode-json", - "ms-python.python", - "ms-vscode.cpptools", - "bradlc.vscode-tailwindcss", - "esbenp.prettier-vscode" - ], - "settings": { - "terminal.integrated.defaultProfile.linux": "bash", - "editor.formatOnSave": true - } - } - }, - - // 容器创建后执行的命令 - "postCreateCommand": "sudo apt-get update && sudo apt-get install -y git curl wget vim", - - // 开发容器的特性 - "features": { - "ghcr.io/devcontainers/features/common-utils:2": { - "installZsh": true, - "installOhMyZsh": true, - "upgradePackages": true - }, - "ghcr.io/devcontainers/features/docker-in-docker:2": { - "version": "latest" - }, - "ghcr.io/devcontainers/features/node:1": { - "version": "lts" - }, - "ghcr.io/devcontainers/features/python:1": { - "version": "3.11" - } - }, - - // 端口转发 - "forwardPorts": [3000, 8080, 5432], - "portsAttributes": { - "3000": { - "label": "Frontend", - "onAutoForward": "notify" - }, - "8080": { - "label": "Backend API", - "onAutoForward": "notify" - }, - "5432": { - "label": "PostgreSQL", - "onAutoForward": "silent" - } - }, - - // 挂载设置 - "mounts": [ - "source=${localWorkspaceFolder}/.devcontainer,target=/workspace/.devcontainer,type=bind,consistency=cached", - "source=devcontainer-home,target=/home/vscode,type=volume" - ], - - // 容器用户设置 - "remoteUser": "vscode", - "containerUser": "vscode", - - // 环境变量 - "remoteEnv": { - "WORKSPACE": "/workspace", - "NODE_ENV": "development" - } + "name": "Simple Dev Container", + "image": "mcr.microsoft.com/devcontainers/base:ubuntu" }