정민우

Merge branch 'backend-docker' into 'master'

[New] Readme 추가



See merge request !7
...@@ -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 }
......
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