정민우

Merge branch 'backend-docker' into 'master'

[New] Readme 추가



See merge request !7
......@@ -95,8 +95,31 @@ exports.removeDockerfile = async (req, res) => {
return sendError(res, 500, error.message)
}
}
exports.listImage = async (req, res) => {
const id = req.decoded.id
if (!id) {
return sendError(res, 401, 'InvalidToken')
}
try{
let dockerfiles = await Dockerfile.findAndCountAll({
where: {
userId: id
},
order: [
['createdAt', 'desc']
]
})
const result = {
count: dockerfiles.count,
data: dockerfiles.rows
}
return sendResponse(res, result, 200)
} catch(error) {
logging('image', 'error', { code: 500, message: error.message }, req)
return sendError(res, 500, error.message)
}
}
exports.buildImage = async (req, res) => {
......@@ -104,6 +127,7 @@ exports.buildImage = async (req, res) => {
exports.removeImage = async (req, res) => {
}
exports.listContainer = async (req, res) => {
}
......
# 주제
가상 서버 호스팅 서비스
## 프로젝트 개요
저희 프로젝트를 간략히 설명하자면 VPS를 제공하는 서비스입니다.
VPS는 Virtual Private Server의 약자로 가상 사설 서버를 의미합니다.
가상화 기술을 사용하여 하나의 물리적 서버를 여러 개의 가상 서버로 나누어주는 것을 가상 사설 서버라고 합니다.
흔히 가상 사설 서버를 클라우드 서버라고 부르며 아마존, Microsoft가 VPS 산업에 뛰어들면서 시장의 규모와 기술 연구 수준이 폭발적으로 증가하고 있습니다.
저희는 사용자가 개인 서버를 손쉽게 만들고 관리할 수 있도록 도와주는 서비스를 개발했습니다.
## 프로젝트 목표
- Dockerfile만 업로드 하면 손쉽게 가상 서버를 구축할 수 있도록 함
- 직접 클라우드를 제공하는 서비스를 만들어 클라우드 컴퓨팅에 대해 학습
- 수업 시간에 배운 Docker 활용
## 사용된 기술
- React
- Node.js express
- Nginx
- MySQL
- Docker SDK
## 구현 기능
- 회원가입, 사용자 로그인/로그아웃, 사용자 인증
- Dockerfile 업로드, 관리, 삭제
- Docker Image Build, 관리, 삭제
- Docker Container Create, Start/Stop, 관리, 삭제
## 설치 방법
1. Clone the repository.
```bash
git clone http://khuhub.khu.ac.kr/2020105655/vps_service
```
2. Install npm packages frontend, backend.
```bash
cd frontend
npm install
cd ..
cd backend
npm install
cd ..
```
3. Build frontend react app.
```bash
cd frontend
npm run build
```
4. Create new file named `.env` at ./backend and enter info as below.
- .env.example 파일 참조
```
PORT=3000
MYSQL_USERNAME=root
MYSQL_PASSWORD=
MYSQL_DATABASE=
MYSQL_HOST=127.0.0.1
MYSQL_PORT=3306
CORS_ALLOWED_URL={YOUR URL}
INITIAL_ADMIN_ID=
INITIAL_ADMIN_PW=
JWT_KEY=
```
5. Edit nginx config file.
```
server {
server_name {YOUR URL};
root /{YOUR DIR}/vps_service/frontend/build;
location /api/ {
proxy_pass http://127.0.0.1:3000/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
}
location / {
try_files $uri $uri/ /index.html;
}
```
6. Run the scripts.
```bash
cd backend
npm start
```
## Demo
https://vps.pinkjelly.cat