- Jib를 이용하여 Docker 이미지 생성 및 DockerHub에 업로드
gradle jib --image=[DOCKERHUB_ACCOUNT]/sju-capstone-room-reservation-server
- 서버에 접속
- MySQL docker container 실행
docker run --name capstone6-mysql -e MYSQL_ROOT_PASSWORD=[ROOT_PASSWORD] -d -p 3306:3306 mysql -v $(pwd)/mysql:/var/lib/mysql
- MySQL 로그인 후 DB 셋업
셋업: Spring Batch 사용을 위해서는 DB에 spring batch metadata table들을 생성해야 함. 해당 링크에서 schema를 복사하여 DB에 적용: schema-mysql.sql
docker cp ./schema-mysql.sql capstone6-mysql:/home/
docker exec -it capstone6-mysql mysql -u root -p
CREATE DATABASE capstone;
CREATE USER 'capstone6'@'%' IDENTIFIED BY 'capstone6';
GRANT ALL PRIVILEGES ON capstone.* TO 'capstone6'@'%';
FLUSH PRIVILEGES;
USE capstone;
SOURCE /home/schema-mysql.sql;
- API 서버 실행
docker run --name capstone6-apiserver -d -p 8282:8282 --link capstone6-mysql:mysql -v $(pwd)/app/data:/app/data:rw wlghks0314/sju-capstone-room-reservation-server
- Nginx 서버 실행
docker run --name capstone6-nginx -d -p 80:80 --link capstone6-apiserver:wlghks0314/sju-capstone-room-reservation-server -v $(pwd)/nginx.conf:/etc/nginx/nginx.conf -v $(pwd)/nginx/conf.d:/etc/nginx/conf.d -v $(pwd)/web/frontend:/var/www/capstone/frontend nginx
인프라는 다음과 같이 Nginx 서버 -> API 서버 -> MySQL(DB) docker 컨테이너들로 이루어져 있음.
Nginx 서버는 앞단에서 다음과 같은 역할을 수행함.
- API 서버로 요청을 전달 (백엔드 API):
https://{SERVER_IP}/api/...
로 요청을 보내면 API 서버로 전달됨 - 정적 페이지 서빙 (프론트엔드 웹앱):
https://{SERVER_IP}/
로 요청을 보내면 프론트엔드 웹앱을 다운받을 수 있음.
사용자는 브라우저를 통해 https://{SERVER_IP}/
로 웹페이지(웹앱)를 요청하고, 웹앱에서 https://{SERVER_IP}/api/...
로 API 서버로 요청을 보내게 됨.