도커 운영에 적용기

아이스__아메리·2023년 5월 24일
0

도입기&적용기

목록 보기
1/7
post-custom-banner

개요

AWS 관련 서류 준비 중이여서 아직 클라우드 서비스를 이용하지 못하는 상황이였다. 백엔드는 Spring Security 와 JWT 을 이용하여 소셜 로그인 연동까지 구현하였고, 프론트도 로그인 페이지 까지 만들었다. 그래서 로그인이 잘되어 쿠키에 토큰이 잘 전달 되고 저장되는지 확인해보고 싶어서 개발서버를 배포하게 되었다.
연동 하기에 앞서 걱정되는 부분이 몇개 있었다.
1. CORS 에러
→ 예상 했던대로 CORS 에러를 만나게 되었다. 예상했던거라 대응할 수 있었다. https://localhost:3000 을 열어 주었고 Spring 시큐리티 설정도 바꾸어주었다.
2. HTTPS 그리고 HTTP
→ 아마 작업하면서 가장 큰 난관이었던 부분이였다. 프론트는 https://localhost:3000 백엔드는 https://localhost:9090 을 사용중이 었고 중간에는 웹서버(Nginx)는 없었다.
→ 백엔드는 https을 적용하기 위해 자체서명 인증서를 이용하였다.
→ 프론트 또한 프록시 설정을 통해 자체서명 인증을 받았다고 했다.
→ 그럼 쿠키가 잘 받아져야 한다고 생각하였다. 하지만 HTTP Response 헤더 안에 Set-Cookie에는 쿠키가 잘 박히지만 웹 브라우저 쿠키 저장소에서는 쿠키가 저장되지 않는 이슈가 생겨버렸다.. 그리고 만난 오류는 SSL_ERROR..어쩌구저쩌구.. 쉽게 요약하면 너네 HTTPS 적용 했긴 했는데~ 어느 인증기관에서 인증 받았는지 모르는데 우리가 어떻게 신뢰하고 쿠키를 넘겨줘? 이런 느낌이였다. 그래서 고뇌했다.. 아.. 이거 nginx 띄워서 SSL 설정 해야겠네? 그리고 HTTPS 인증 해야하니깐 도메인도 하나 필요하겠네? 그렇다 완전 돌아가는거였다. 그렇게 최대한 무료 도메인도 찾아보고 구글링하면서 래퍼런스를 찾아봤지만 결국 도메인을 사야했었다.. 그렇게 결론이 나려는 순간 어느 글에서 사파리에서는 되고 크롬에서는 안된다 라는 말을 보았다. 그래서 한번 더 생각해보았다. 이거 브라우저에서만 안되는거 일 수도 있겠네? 그렇게 찾은 결과.. 방법을 찾았다!! 이제 도커를 통해 간이 개발 서버를 배포해보자
PS) 규정상 HTTPS 와 HTTP 통신은 막고 있다.

  • 백엔드 로컬에서 Dockerfile을 통하여 SpringBoot + gradle로 build한 JAR 파일을 이미지화 시켜준다.
  • 해당 이미지를 도커 허브에 private 계정 (회사 계정) 업로드 해준다.
  • 프론트팀은 자기 로컬 PC에 백엔드가 올린 이미지를 PULL 받아 백엔드 미리 넘겨준 docker-compose.yml 파일을 이용하여 pull받은 이미지와 mysql, redis을 받아와 테스트 해본다.

실제 구축하면서 겪었던 문제들과 배운점

  • 도커 허브 같은 레포지토리에 같은 이미지명과 같은 태그로 올리면 덮어쓰기가 된다. 그러므로 도커허브에 올라간 이미지를 수동으로 삭제할 필요 없다.
  • Tag 없이는 docker push을 할 수 없다. 그러므로 태그를 필수적으로 지정해주어야 한다.
  • 도커를 빌드하기 전에 ./gradlew clean build 을 통하여 자동으로 빌드하고 이미지화 시켜주고 싶었지만 방법으로 찾아보니 이것저것 만져야될게 많아서 일단은 수동으로 빌드하고 이미지화 시키고 있다. 나중에 기회가 된다면 자동화를 시켜보고싶다.
  • JVM설정 - 현재의 단계에서는 자동으로 빌드된 컨테이너를 사용하지만 GC를 설정할 수 있는 방법을 찾았다 Jib이라는 것으로 라이브러리 생성 후 gradle에 설정이 가능하다.
    개발과 운영에 배포하는 yml파일의 내용이 달라 기존 사용하고있던 개발, 운영 Docker파일을 gradle파일을 두개로 분리해야했다.
    하지만 멀티모듈 아키텍쳐라 gradle 한곳에서 관리되고 있어 가능한지가 의문이었고 무엇보다도 시간의 여유가 부족했다. 프로젝트에서 바로 컨테이너의 이미지로 되어 빌드시간이 압도적으로 빠르기때문에 그것을 위해 따로 진행해볼 예정이다.
profile
츠케멘 좋아
post-custom-banner

0개의 댓글