This commit is contained in:
2026-04-14 16:27:47 +08:00
commit 4b38a4c952
134 changed files with 7478 additions and 0 deletions

13
.devcontainer/README.md Normal file
View File

@@ -0,0 +1,13 @@
# VS Code Docker Dev
This repository provides two VS Code Dev Container modes:
- `external`: connect to externally managed PostgreSQL and Redis
- `internal`: create PostgreSQL and Redis inside the dev environment
Open the wanted config in VS Code:
- `.devcontainer/external/devcontainer.json`
- `.devcontainer/internal/devcontainer.json`
Both modes mount the repository into `/workspaces/K12study`.

8
.devcontainer/external/.env.example vendored Normal file
View File

@@ -0,0 +1,8 @@
K12STUDY_DB_HOST=host.docker.internal
K12STUDY_DB_PORT=5432
K12STUDY_DB_NAME=k12study
K12STUDY_DB_USER=k12study
K12STUDY_DB_PASSWORD=k12study
K12STUDY_REDIS_HOST=host.docker.internal
K12STUDY_REDIS_PORT=6379
K12STUDY_REDIS_PASSWORD=

View File

@@ -0,0 +1,31 @@
{
"name": "K12Study External DB Dev",
"dockerComposeFile": [
"docker-compose.yml"
],
"service": "workspace",
"workspaceFolder": "/workspaces/K12study",
"shutdownAction": "stopCompose",
"forwardPorts": [5173, 8080, 8081, 8082, 8088, 9000],
"customizations": {
"vscode": {
"settings": {
"terminal.integrated.defaultProfile.linux": "bash"
},
"extensions": [
"vscjava.vscode-java-pack",
"redhat.java",
"vmware.vscode-boot-dev-pack",
"ms-azuretools.vscode-docker",
"ms-python.python",
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode"
]
}
},
"remoteEnv": {
"SPRING_PROFILES_ACTIVE": "dev",
"K12STUDY_DEV_MODE": "external"
},
"postCreateCommand": "cd /workspaces/K12study/frontend && pnpm install"
}

View File

@@ -0,0 +1,19 @@
services:
workspace:
image: mcr.microsoft.com/devcontainers/universal:2
volumes:
- ../../:/workspaces/K12study:cached
working_dir: /workspaces/K12study
command: sleep infinity
environment:
K12STUDY_DB_HOST: ${K12STUDY_DB_HOST:-host.docker.internal}
K12STUDY_DB_PORT: ${K12STUDY_DB_PORT:-5432}
K12STUDY_DB_NAME: ${K12STUDY_DB_NAME:-k12study}
K12STUDY_DB_USER: ${K12STUDY_DB_USER:-k12study}
K12STUDY_DB_PASSWORD: ${K12STUDY_DB_PASSWORD:-k12study}
K12STUDY_REDIS_HOST: ${K12STUDY_REDIS_HOST:-host.docker.internal}
K12STUDY_REDIS_PORT: ${K12STUDY_REDIS_PORT:-6379}
K12STUDY_REDIS_PASSWORD: ${K12STUDY_REDIS_PASSWORD:-}
PYTHONUNBUFFERED: "1"
extra_hosts:
- "host.docker.internal:host-gateway"

View File

@@ -0,0 +1,32 @@
{
"name": "K12Study Internal DB Dev",
"dockerComposeFile": [
"docker-compose.yml"
],
"service": "workspace",
"workspaceFolder": "/workspaces/K12study",
"runServices": ["workspace", "postgres", "redis"],
"shutdownAction": "stopCompose",
"forwardPorts": [5173, 8080, 8081, 8082, 8088, 9000, 5432, 6379],
"customizations": {
"vscode": {
"settings": {
"terminal.integrated.defaultProfile.linux": "bash"
},
"extensions": [
"vscjava.vscode-java-pack",
"redhat.java",
"vmware.vscode-boot-dev-pack",
"ms-azuretools.vscode-docker",
"ms-python.python",
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode"
]
}
},
"remoteEnv": {
"SPRING_PROFILES_ACTIVE": "dev",
"K12STUDY_DEV_MODE": "internal"
},
"postCreateCommand": "cd /workspaces/K12study/frontend && pnpm install"
}

View File

@@ -0,0 +1,46 @@
services:
workspace:
image: mcr.microsoft.com/devcontainers/universal:2
volumes:
- ../../:/workspaces/K12study:cached
working_dir: /workspaces/K12study
command: sleep infinity
environment:
K12STUDY_DB_HOST: postgres
K12STUDY_DB_PORT: 5432
K12STUDY_DB_NAME: k12study
K12STUDY_DB_USER: k12study
K12STUDY_DB_PASSWORD: k12study
K12STUDY_REDIS_HOST: redis
K12STUDY_REDIS_PORT: 6379
K12STUDY_REDIS_PASSWORD: ""
PYTHONUNBUFFERED: "1"
depends_on:
- postgres
- redis
postgres:
image: postgres:16
restart: unless-stopped
environment:
POSTGRES_DB: k12study
POSTGRES_USER: k12study
POSTGRES_PASSWORD: k12study
ports:
- "5432:5432"
volumes:
- postgres-dev-data:/var/lib/postgresql/data
- ../../init/pg:/docker-entrypoint-initdb.d
redis:
image: redis:7
restart: unless-stopped
ports:
- "6379:6379"
command: redis-server --appendonly yes
volumes:
- redis-dev-data:/data
volumes:
postgres-dev-data:
redis-dev-data: