Project/9uin

spring boot 사이드 프로젝트: DockerFile, docker-compose.yml 작성 및 클라우드 세팅(GCP) 2

attlet 2023. 10. 30. 20:01

이 글은 다음글에서 이어진다.

 

https://yoonsys.tistory.com/22

 

spring boot: DockerFile, docker-compose.yml 작성 및 클라우드 세팅(GCP) 1

프로젝트 작성이 거진 다 끝나고, 테스트와 기능 개선 과제, 그리고 배포 정도의 과제가 남았다. 이제 로컬로 개발서버를 여는 것 뿐 아니라 클라우드 인스턴스에 24시간 배포를 시작해보려 한다

yoonsys.tistory.com

 

 

gcp에 접속할 준비가 끝났다면, 이제 들어가서 세팅해볼까 싶다. 하지만 가장 중요한 부분인 포트 열기와 고정 ip할당 받기가 남아있다.

 

 

기본적으로 스프링 부트에서 사용하는 8080포트를 열지 않으면 외부에서 8080으로 접속을 시도해도 막히게 될 것이다.

 

 

 

포트 열기


 

 

위와 같이 메뉴에서 vpc 네트워크 -> 방화벽으로 들어간다.

 

 

 

 

그럼 위 화면처럼 나올텐데, 방화벽 규칙 만들기로 들어간다.

 

 

 

 

이름은 필수이다. 트래픽 방향 수신, 일치시 허용 작업으로 지정한다. 

 

 

 

이 부분에서 막혔었는데, 대상을 잘 지정하는것이 중요하다. 지정된 대상 태그를 선택하고 이름을 잘 못 작성하면 인식을 못 하기에, 나는 그냥 서비스 계정을 만들어 지정된 서비스 계정 탭을 선택해서 해결했다.

 

 

 

 

그 다음 이런식으로 tcp 포트를 열어주도록 한다. 나는 8080과 8081을 열어줬는데, 8081도 나중에 사용할 일이 있을 것으로 예상되어 그렇게 설정했다. 다 끝나고 저장을 누르면 된다.

 

 

 

 

 

 

그럼 spring이라는 새로운 방화벽 규칙이 생긴 것을 볼 수 있다. 

 

 

 

 

 

고정 IP할당


 

aws같이 다른 서비스를 사용해봤으면 알겠지만 인스턴스를 할당받고 사용한 후 껐다가 다시 사용해보면 인스턴스의 ip주소가 바뀌는 것을 알 수 있다. 고정 ip를 할당받지 않으면 이렇게 계속 바뀌게 되니, 한 번 할당받아 보자.

 

 

 

 

vpc 네트워크 -> ip주소 탭으로 들어간다.

 

 

 

 

 

이런 화면이 나온다. 외부 고장 ip 주소 예약을 클릭한다.

 

 

 

 

 

이름과 계층, ip 버전을 선택하고 리전을 골라준다. 리전은 아마 위치가 한정되어 있을 것이다. 인스턴스 생성한 그 리전과 비슷하게 맞춰줬다. 연결 대상을 우리가 만든 인스턴스로 지정한다.

 

 

중요한 건 외부 고정 ip를 할당 받은 후 바로 인스턴스가 그 ip를 사용하도록 해야한다. 인스턴스에 연결되지 않은 채 외부 ip가 방치되면 더 높은 요금이 청구된다.

 

 

이렇게 우리 인스턴스에 외부 고정 ip까지 할당되었다.

 

 

 

이제 인스턴스에 들어가 docker-compose up 명령어를 치면 지정한 컨테이너들이 실행되는 것을 볼 수 있다. docker-compose up은 docker-compose.yml에 적힌대로 컨테이너들을 생성하는 명령어 이다. 

 

 

 

docker 명령어를 실행할 때는 sudo su를 통해 관리자 로그인을 하고 해야한다. 그리고 docker-compose.yml이 있는 디렉토리로 이동해서 실행해야한다는 사실도 잊지 말자.

 

이제 이 고정 ip주소의 swagger로 접속해보자.

 

 

 

 

인스턴스 내로 성공적으로 접근한 모습이다.

 

 

 

 

이렇게 인스턴스 하나에 대한 설정들과, 도커를 통해 컨테이너들을 실행해서 배포하는 과정을 거쳤다. 이제 단순히 이렇게 배포하는게 아니라 ci/cd를 구축해 코드 업데이트가 발생했을 때 인스턴스에 접속할 필요없이 연속적으로 병합, 배포하는 과정을 공부해보도록 하려한다.