Showing
2 changed files
with
110 additions
and
0 deletions
| ... | @@ -95,8 +95,31 @@ exports.removeDockerfile = async (req, res) => { | ... | @@ -95,8 +95,31 @@ exports.removeDockerfile = async (req, res) => { |
| 95 | return sendError(res, 500, error.message) | 95 | return sendError(res, 500, error.message) |
| 96 | } | 96 | } |
| 97 | } | 97 | } |
| 98 | + | ||
| 98 | exports.listImage = async (req, res) => { | 99 | exports.listImage = async (req, res) => { |
| 100 | + const id = req.decoded.id | ||
| 101 | + if (!id) { | ||
| 102 | + return sendError(res, 401, 'InvalidToken') | ||
| 103 | + } | ||
| 104 | + try{ | ||
| 105 | + let dockerfiles = await Dockerfile.findAndCountAll({ | ||
| 106 | + where: { | ||
| 107 | + userId: id | ||
| 108 | + }, | ||
| 109 | + order: [ | ||
| 110 | + ['createdAt', 'desc'] | ||
| 111 | + ] | ||
| 112 | + }) | ||
| 99 | 113 | ||
| 114 | + const result = { | ||
| 115 | + count: dockerfiles.count, | ||
| 116 | + data: dockerfiles.rows | ||
| 117 | + } | ||
| 118 | + return sendResponse(res, result, 200) | ||
| 119 | + } catch(error) { | ||
| 120 | + logging('image', 'error', { code: 500, message: error.message }, req) | ||
| 121 | + return sendError(res, 500, error.message) | ||
| 122 | + } | ||
| 100 | } | 123 | } |
| 101 | exports.buildImage = async (req, res) => { | 124 | exports.buildImage = async (req, res) => { |
| 102 | 125 | ||
| ... | @@ -104,6 +127,7 @@ exports.buildImage = async (req, res) => { | ... | @@ -104,6 +127,7 @@ exports.buildImage = async (req, res) => { |
| 104 | exports.removeImage = async (req, res) => { | 127 | exports.removeImage = async (req, res) => { |
| 105 | 128 | ||
| 106 | } | 129 | } |
| 130 | + | ||
| 107 | exports.listContainer = async (req, res) => { | 131 | exports.listContainer = async (req, res) => { |
| 108 | 132 | ||
| 109 | } | 133 | } | ... | ... |
readme.md
0 → 100644
| 1 | +# 주제 | ||
| 2 | +가상 서버 호스팅 서비스 | ||
| 3 | + | ||
| 4 | +## 프로젝트 개요 | ||
| 5 | +저희 프로젝트를 간략히 설명하자면 VPS를 제공하는 서비스입니다. | ||
| 6 | +VPS는 Virtual Private Server의 약자로 가상 사설 서버를 의미합니다. | ||
| 7 | +가상화 기술을 사용하여 하나의 물리적 서버를 여러 개의 가상 서버로 나누어주는 것을 가상 사설 서버라고 합니다. | ||
| 8 | +흔히 가상 사설 서버를 클라우드 서버라고 부르며 아마존, Microsoft가 VPS 산업에 뛰어들면서 시장의 규모와 기술 연구 수준이 폭발적으로 증가하고 있습니다. | ||
| 9 | +저희는 사용자가 개인 서버를 손쉽게 만들고 관리할 수 있도록 도와주는 서비스를 개발했습니다. | ||
| 10 | + | ||
| 11 | +## 프로젝트 목표 | ||
| 12 | +- Dockerfile만 업로드 하면 손쉽게 가상 서버를 구축할 수 있도록 함 | ||
| 13 | +- 직접 클라우드를 제공하는 서비스를 만들어 클라우드 컴퓨팅에 대해 학습 | ||
| 14 | +- 수업 시간에 배운 Docker 활용 | ||
| 15 | + | ||
| 16 | +## 사용된 기술 | ||
| 17 | +- React | ||
| 18 | +- Node.js express | ||
| 19 | +- Nginx | ||
| 20 | +- MySQL | ||
| 21 | +- Docker SDK | ||
| 22 | + | ||
| 23 | +## 구현 기능 | ||
| 24 | +- 회원가입, 사용자 로그인/로그아웃, 사용자 인증 | ||
| 25 | +- Dockerfile 업로드, 관리, 삭제 | ||
| 26 | +- Docker Image Build, 관리, 삭제 | ||
| 27 | +- Docker Container Create, Start/Stop, 관리, 삭제 | ||
| 28 | + | ||
| 29 | +## 설치 방법 | ||
| 30 | +1. Clone the repository. | ||
| 31 | + ```bash | ||
| 32 | + git clone http://khuhub.khu.ac.kr/2020105655/vps_service | ||
| 33 | + ``` | ||
| 34 | +2. Install npm packages frontend, backend. | ||
| 35 | + ```bash | ||
| 36 | + cd frontend | ||
| 37 | + npm install | ||
| 38 | + cd .. | ||
| 39 | + cd backend | ||
| 40 | + npm install | ||
| 41 | + cd .. | ||
| 42 | + ``` | ||
| 43 | +3. Build frontend react app. | ||
| 44 | + ```bash | ||
| 45 | + cd frontend | ||
| 46 | + npm run build | ||
| 47 | + ``` | ||
| 48 | +4. Create new file named `.env` at ./backend and enter info as below. | ||
| 49 | +- .env.example 파일 참조 | ||
| 50 | + ``` | ||
| 51 | + PORT=3000 | ||
| 52 | + MYSQL_USERNAME=root | ||
| 53 | + MYSQL_PASSWORD= | ||
| 54 | + MYSQL_DATABASE= | ||
| 55 | + MYSQL_HOST=127.0.0.1 | ||
| 56 | + MYSQL_PORT=3306 | ||
| 57 | + CORS_ALLOWED_URL={YOUR URL} | ||
| 58 | + INITIAL_ADMIN_ID= | ||
| 59 | + INITIAL_ADMIN_PW= | ||
| 60 | + JWT_KEY= | ||
| 61 | + ``` | ||
| 62 | +5. Edit nginx config file. | ||
| 63 | + ``` | ||
| 64 | + server { | ||
| 65 | + server_name {YOUR URL}; | ||
| 66 | + | ||
| 67 | + root /{YOUR DIR}/vps_service/frontend/build; | ||
| 68 | + | ||
| 69 | + location /api/ { | ||
| 70 | + proxy_pass http://127.0.0.1:3000/; | ||
| 71 | + proxy_set_header X-Real-IP $remote_addr; | ||
| 72 | + proxy_set_header Host $http_host; | ||
| 73 | + } | ||
| 74 | + | ||
| 75 | + location / { | ||
| 76 | + try_files $uri $uri/ /index.html; | ||
| 77 | + } | ||
| 78 | + ``` | ||
| 79 | +6. Run the scripts. | ||
| 80 | + ```bash | ||
| 81 | + cd backend | ||
| 82 | + npm start | ||
| 83 | + ``` | ||
| 84 | + | ||
| 85 | +## Demo | ||
| 86 | +https://vps.pinkjelly.cat |
-
Please register or login to post a comment