
도커... 많이 터트려봤다..
내가 처음 도커를 적용시킬때 원리나 방식을 아예 모르는 상태로 도커를 적용시켜 보려하다 보니 이래저래 도커에 대한 개념도없고 무식하게 적용시켜보려고 했던거 같다..
도커에서 Nginx, Redis, Mysql, Spring-Boot를 도커 컨테이너 안에 띄우고 하나의 네트워크로 묶어서 연결하는 방식으로 진행해 보았다..
진행방식
처음에 연습할땐 이미지를 생성하고 그 이미지를 기반으로 컨테이너에 대한 기초를 이해하는데 시간을 보냈다.
여러번에 실패를 거듭하고 가이드를 따라 성공을한후 내가 적용하고 싶은 스프링부트에 컨테이너를 만들고 내가 띄우고 싶은 Nginx, Redis, Mysql, Spring-Boot를 연결하고 컨테이너를 생성해 봤고 이걸 하나로 묶는 Docker Compose를 생성하여 관리를 해보았다.
스프링부트에서 Docker compose Support라는? 도구가 있길래 찾아보니 간단하게 Docker compose를 생성할 수 있게 도와주었다..
여기서 Nginx, Mysql, Redis, Spring-Boot에 대한 설정을 해주고 Nginx.conf 파일, Dockerfile에 대해 설정을 해준뒤
터미널에서 docker-compose up --build를 통해 이미지를 생성후 Docker compose (컨테이너)를 생성하였다..
에러 상황..
상황 1. AWS t2, t3
- 내가 원격서버로 테스트로 서버를 띄워서 nginx가 앱을 띄울수 있게 해보려고 했다.. 그런데 nginx는 닿았는데 nginx가 앱으로 넘겨주지 못하는? 경우가 발생하였다. 도대체 문제를 알 수 없었다.. 왜지 .. 설정파일을 수 차례 되새김하면서 찾아보려고 애를 썻다.. 그러다 내가 원격서버에 띄운 인스턴스를 봤는데 원래 t2프리티어를 사용하려고 했는데 알고보니 t3?로 되어있었다.. 그래서 혹시... 하면서 인스턴스를 새로 만들고 t2를 생성하여 연결해 보았다.. ??? 왜 되는걸까 설정파일은 문제가 아니였고 t2로 바꿔보니 잘돌아 간다
내 생각 :
- 기존에 t3 서버에서는 음.. 캐시나 이전에 계속 설정을 바꿔보면서 더미 데이터 같은게 영향을 주지않았을까 라는생각이 들고 아니면 t3 즉 프리티어가 아닌 인스턴스로 웹서버를 돌려보려했을때 문제가 발생했던게 아닌가 싶다..
상황 2. jar 파일을 보내지않고 프로젝트를 통채로 원격서버로 보내서 프리티어 서버 터트린경험
- 이 시점에 나는 원격서버로 jar파일만 보내지않고 프로젝트를 통째로 옮기고 빌드를 하는 방식으로 설정을 했다 그렇게 하니 원격서버 즉 프리티어 서버가 자꾸 터지는 것이다.. 그래서 같이 공부하는 동기분 한테 여쭤 보았다. 프리티어라서 자꾸 터지는걸까요? 그러고 내가 하던 방식을 보여 드렸더니 어느부분은 맞는데 일단 스프링이 어떻게 실행되는지 고민해 보라고 하셨다.. 고민을 해보니 ./gradlew build , java -jar app.jar 이 두 명령어가 실행되는것이다 빌드 후 빌드된 jar파일을 실행하는 방식이였다. 생각해보니 그럼 원격서버에는 프로젝트가아닌 빌드된 jar파일만 있으면 된다는것을 깨닫고 깃액션을 통해 CICD를 설정할때 빌드된 jar파일을 원격서버로 옮기는 방식을 사용하게 되었다.
내 생각 :
- 기존에는 스프링이 실행되는 방식을 정확히 숙지를 하지못해 프로젝트 전체를 옮기고 빌드를 해야한다고 생각을 하였지만 빌드가된 jar파일만 있으면 스프링을 실행할수 있다는것을 깨닫고 이후 CICD를 적용할때 jar파일만 SCP로 원격서버로 옮기는 설정을 하게 되었다.
상황 3. CICD를 통해 원격서버로 SCP로 jar 파일을 보낼때 build/libs안에 build/libs/*jar 파일을 보내서 왜 jar파일이 안보내지지 하면서 해맷던것 (경로설정..)
- uses: appleboy/scp-action@v0.1.4 를 사용해서
source: "build/libs/*.jar"
target: "/home/ubuntu/korail/build/libs"
이렇게 경로를 지정했는데 그결과 원격서버에 build/libs 안에 jar파일이 없고 build파일이 존재하는것이였다.. 이때 jar파일이 없어서 왜 안옮겨졌지 라는생각만 들어 그안에 build파일은 인식하지못했다. 이후 여러번에 삽질을 통해 build라는 파일이 있는것을 확인하고 그 파일안에 jar파일이 존재하는것을보고 경로가 잘못되었다는것을 깨닫고
target: "/home/ubuntu/korail/
이렇게 수정후 build파일을 덮어쓰기 하는식으로 수정하였다..
내 생각:
- build/libs안에 jar파일만 저경로 안에 넣으려고 의도하였으나 jar파일이 존재하지않아 jar파일이 옮겨지지않은건가 라는생각을 하였지만 그파일안에 또다른 build/libs/*jar파일이 있는것을 확인후 경로가 잘못되었음을 감지한 후. 경로를 수정후 정상 작동되게 만들었다..