본문 바로가기

머리 있든 없든 정리하기!!!

[vue-spring] 배포 연습[1] : centOS9-docker install[2]

728x90
반응형

[이전 글]

vb에 CentOS9을 설치하고 GUI에서 CLI로 변경하는 작업

[이번 글]

 

CentOS9에 docker 설치

 

- 시스템 업데이트

sudo yum update -y

 

- Docker 저장소 추가

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

 

- Docker 설치

sudo yum install -y docker-ce docker-ce-cli containerd.io

 

- Docker 서비스 시작 및 자동 실행 설정

sudo systemctl start docker
sudo systemctl enable docker

 

- 설치 확인

docker --version
sudo docker run hello-world

 

- 현재 사용자를 Docker 그룹에 추가 (재부팅 필요)

sudo usermod -aG docker $USER
reboot

Docker에서 Tomcat 실행

- Tomcat 컨테이너 실행

docker run -d --name tomcat -p 8080:8080 tomcat

 

- Tomcat 실행 확인

라우저에서 http://<CentOS_IP>:8080 접속
이렇게 했는데 접속이 되지 않아서 알아보니 VirtualBox에서 설정을 더 해줘야한다.

그리고 추가로 더 말해서

vm 재시작 후 tomcat에 바로 들어가려면 에러뜬다. 알고보니 Exited 상태인데 수동으로 시작해줘야한다. 왜 그런지는 모르겠다.

docker start tomcat

 

컨테이너 자동 시작 설정을 해주면 되는 부분이었다.

 

컨테이너를 삭제하고 다시 실행해줘야하 한다.

docker rm -f tomcat
docker run -d --name tomcat --restart unless-stopped -p 8080:8080 tomcat

 

로컬(내컴퓨터)에서 http://172.17.0.1:8080 연결해주니 잘된다. 아주 기분이 좋다 ㅎㅎㅎ

  • CentOS_IP는 ip a 명령어로 확인 가능

- Tomcat Webapps에 Vue 및 Spring 배포 가능하도록 설정

docker exec -it tomcat /bin/bash

 


Vue 프로젝트 배포

 - Vue 프로젝트 빌드 (로컬에서 진행)      

npm run build

 

- 빌드된 파일을 Tomcat 컨테이너로 복사

docker cp dist/. tomcat:/usr/local/tomcat/webapps/ROOT

 


Spring Boot 애플리케이션 배포

- Spring Boot 프로젝트 JAR 빌드

./gradlew bootJar   # 또는 mvn package

 

- Spring Boot 실행을 위한 Dockerfile 생성

FROM openjdk:17
COPY build/libs/myapp.jar /app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]

 

- Docker 이미지 빌드 및 실행

docker build -t my-spring-app .
docker run -d --name spring-app -p 8081:8080 my-spring-app

 

- Spring Boot API 확인

curl http://<CentOS_IP>:8081/api

 


Vue와 Spring 연동하여 내 PC에서 보기

- Vue 프로젝트의 API URL을 CentOS IP로 변경

VUE_APP_API_URL=http://<CentOS_IP>:8081

 

- Vue에서 CentOS의 Spring Boot API 호출 확인

curl http://<CentOS_IP>:8081/api

 

- 브라우저에서 Vue 애플리케이션 접속

=> http://<CentOS_IP>:8080

728x90
반응형