From c7690a0fd8d9a0e9a0f28718d6974cc4a703c1bf Mon Sep 17 00:00:00 2001 From: ufo6849 Date: Thu, 19 Mar 2026 19:44:54 +0900 Subject: [PATCH] Initial project setup (node) --- .gitignore | 10 ++++ .vscode/extensions.json | 13 +++++ .vscode/settings.json | 32 +++++++++++ .vscode/tasks.json | 124 ++++++++++++++++++++++++++++++++++++++++ Dockerfile | 9 +++ package.json | 11 ++++ server.js | 15 +++++ 7 files changed, 214 insertions(+) create mode 100644 .gitignore create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json create mode 100644 .vscode/tasks.json create mode 100644 Dockerfile create mode 100644 package.json create mode 100644 server.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..66e0f35 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +node_modules/ +__pycache__/ +*.pyc +.env +.venv/ +dist/ +build/ +*.egg-info/ +.DS_Store +Thumbs.db diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..1b2cd06 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,13 @@ +{ + "recommendations": [ + "ms-azuretools.vscode-docker", + "ms-python.python", + "ms-python.black-formatter", + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", + "eamodio.gitlens", + "ms-vscode-remote.remote-ssh", + "redhat.vscode-yaml", + "bradlc.vscode-tailwindcss" + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..8378623 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,32 @@ +{ + // ── Git 설정 ── + "git.defaultCloneDirectory": "C:\\Users\\User\\Projects", + "git.autofetch": true, + "git.confirmSync": false, + "git.enableSmartCommit": true, + + // ── 에디터 설정 ── + "editor.formatOnSave": true, + "editor.tabSize": 2, + "files.eol": "\n", + "files.trimTrailingWhitespace": true, + "files.insertFinalNewline": true, + + // ── Python 설정 ── + "[python]": { + "editor.tabSize": 4, + "editor.defaultFormatter": "ms-python.black-formatter" + }, + + // ── Docker 설정 ── + "[dockerfile]": { + "editor.defaultFormatter": "ms-azuretools.vscode-docker" + }, + + // ── 터미널 설정 ── + "terminal.integrated.defaultProfile.windows": "Git Bash", + + // ── 솔메카 배포 관련 ── + "solmeca.gitea.url": "http://100.125.85.86:3000", + "solmeca.coolify.url": "http://100.125.85.86:8000" +} diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..13df2ca --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,124 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "Deploy: 자동 배포 (서버 자동 선택)", + "type": "shell", + "command": "bash", + "args": [ + "C:/Users/User/Desktop/SERVER_ 운영/deploy.sh", + "${input:repoName}" + ], + "group": "build", + "presentation": { + "reveal": "always", + "panel": "dedicated", + "clear": true + }, + "problemMatcher": [] + }, + { + "label": "Deploy: 서버 지정 배포", + "type": "shell", + "command": "bash", + "args": [ + "C:/Users/User/Desktop/SERVER_ 운영/deploy.sh", + "${input:repoName}", + "${input:appName}", + "${input:serverName}" + ], + "group": "build", + "presentation": { + "reveal": "always", + "panel": "dedicated", + "clear": true + }, + "problemMatcher": [] + }, + { + "label": "Deploy: 서버 상태 확인", + "type": "shell", + "command": "bash", + "args": [ + "C:/Users/User/Desktop/SERVER_ 운영/deploy.sh", + "status" + ], + "group": "build", + "presentation": { + "reveal": "always", + "panel": "dedicated", + "clear": true + }, + "problemMatcher": [] + }, + { + "label": "Git: Gitea에 Push", + "type": "shell", + "command": "git push origin main", + "group": "build", + "presentation": { + "reveal": "always", + "panel": "shared" + }, + "problemMatcher": [] + }, + { + "label": "Git: Commit + Push + Deploy", + "type": "shell", + "command": "bash", + "args": [ + "-c", + "git add -A && git commit -m '${input:commitMsg}' && git push origin main && bash 'C:/Users/User/Desktop/SERVER_ 운영/deploy.sh' $(basename $(git rev-parse --show-toplevel))" + ], + "group": "build", + "presentation": { + "reveal": "always", + "panel": "dedicated", + "clear": true + }, + "problemMatcher": [] + }, + { + "label": "Docker: 로컬 빌드 테스트", + "type": "shell", + "command": "docker build -t ${input:repoName}:test . && docker run --rm -p 8000:8000 ${input:repoName}:test", + "group": "test", + "presentation": { + "reveal": "always", + "panel": "dedicated" + }, + "problemMatcher": [] + } + ], + "inputs": [ + { + "id": "repoName", + "type": "promptString", + "description": "Gitea 레포 이름 (예: fastapi-demo)", + "default": "" + }, + { + "id": "appName", + "type": "promptString", + "description": "Coolify 앱 이름 (비워두면 레포이름 사용)", + "default": "" + }, + { + "id": "serverName", + "type": "pickString", + "description": "배포 서버 선택", + "options": [ + "worker-ai", + "worker-downsys", + "worker-kakao2" + ], + "default": "worker-ai" + }, + { + "id": "commitMsg", + "type": "promptString", + "description": "커밋 메시지", + "default": "update" + } + ] +} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..2e8ab9f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,9 @@ +FROM node:20-alpine +WORKDIR /app +COPY package*.json ./ +RUN npm ci --only=production +COPY . . +EXPOSE 3000 +HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \ + CMD wget -qO- http://localhost:3000/health || exit 1 +CMD ["node", "server.js"] diff --git a/package.json b/package.json new file mode 100644 index 0000000..2e47ffa --- /dev/null +++ b/package.json @@ -0,0 +1,11 @@ +{ + "name": "test-node", + "version": "1.0.0", + "scripts": { + "dev": "node server.js", + "start": "node server.js" + }, + "dependencies": { + "express": "^4.21.0" + } +} diff --git a/server.js b/server.js new file mode 100644 index 0000000..072b9db --- /dev/null +++ b/server.js @@ -0,0 +1,15 @@ +const express = require('express'); +const app = express(); +const PORT = process.env.PORT || 3000; + +app.get('/', (req, res) => { + res.json({ app: 'test-node', status: 'running', time: new Date().toISOString() }); +}); + +app.get('/health', (req, res) => { + res.json({ status: 'ok' }); +}); + +app.listen(PORT, '0.0.0.0', () => { + console.log(`test-node running on port ${PORT}`); +});