깃허브 액션 (github action) 도커 CI/CD 중 직면한 문제와 고민 (MSA 하위 디렉토리)
F_Lab 멘토링 중 aws ec2에 도커3개가 있고 깃허브 액션으로 ci/cd를 하고 있는 중에
나는 금방 끝날 줄 알았는데
생각 외로 쉽지 않았다.
우선 워크 플로우를 좀 보고 어느 정도 작성해서 돌아갈 것이라고(에러라도 발생 할 줄 알고) 생각하고
푸시를 날렸는데도 아무 반응도, 목록에도 뜨질 않았다.
흐음... 좀 당황스러웠다. 먼가 문제가 있다는 말인데
내 눈엔 코드가 완벽하진 않아도 뭐가 문제인지 전혀 모르겠었다.
물론 계속 공부하다보면 알게 될 수도 있겠지만 얼마나 걸릴지를 모르겠었다.
그래서 멘토님께 여쭤보고 수동으로 동작시킬 수 있는 방법이 있다고 검색해 보라고 하셨다.
오....알아보니 진짜 되었다.
이제 로그가 떠서 어느 정도 문제점을 알게 되고 조금씩 해결 해 나갔다.
지금도 약간 이해안되는게
github action이 무슨 OS로 돌아가는지는 모르겠다.
분명 ubuntu는 맞는데 명령어를 수행하면
명령어 수행하는 경로가 자꾸 기본 위치? 로 돌아갔다.
이게 편할 수도 있겠지만 나는 잘 적응이 안되었다.
그리고 좀 다른 헤매었던게
나의 깃프로젝트는 MSA(거창하지만 나름 멀티 프로젝트다)
그래서 하위 프로젝트로 들어가야 gradle이라든지 Docker build등 파일 설정과 폴더 경로를
제대로 설정해 줘야 컴터가 알아들었다.
그래서 해결법은
env:
working-directory: ./xxx
이런식으로 설정해 놓고
깃헙 워크 플로 구문 방식으로
working-directory: ${{ env.working-directory}}
이런식으로 프롬프트 경로를 재설정해 줘야 하는 곳마다 적어서 다시 경로를 설정해주었다.
시간은 걸렸지만 CI 까지는 진행되 docker hub에 새 이미지가 업로드 되는 것을 확인하였다.
CD는 기억으로는 다소 무난하게 진행되었다.
미처 생각 못했던 건 scouter의 agent를 생각 못 했었는데 Dockerfile을 수정하고 워크플로우로 미리 scouter파일을 다운하고 압축 푸는 방식으로 하니 agent.java 폴더는 도커 이미지 안으로 복사 되었다.
agent.java의 설정파일도 미리 깃헙 variable에 추가해서 env.config 이런 방식으로 파일 만들어서 도커 안으로 복사 하려고 했는데
아직 잘 되지 않아 진행중이다.
그리고 push - ssh ec2 접속 - pull - run -d -p 8080:8080 이런 순으로 진행하는데
run 하여 작동은 되는데 무슨 원인인지는 모르겠지만 해당 도커 컨테이너가 중지를 한다. 재시작을 하는 방법도 써봤지만
금방꺼지고 재시작 되기 떄문에 의미는 크게 없을 것 같아서 일단 원했떤 CI/CD의 기본 기능은 되는 것 같아서 추후 해결하기로 하였다.
--------
추후 추가 10.17
도커가 자꾸 종료되는 이유를 알아내었다.
두가지 이유인 것 같았는데
1. 한 가지는 깃헙액션이 종료되거나 연결이 끊어지면 도커도 종료된다.(도커 네트워크 특성상)
1을 해결해도 안되어서 알아보니
2.두 번째는 나의 aws에 있는 db와 연결이 되어지지 않아 도커가 종료되었다.
db를 키고 sudo nohup docker run -d ..... 명령어 .... & 이렇게 실행하니
도커가 30초 만에 종료되던 것이 5분 넘게 살아 있다.
'[F-Lab 멘토링 학습]' 카테고리의 다른 글
| 낙관적 락(Optimistic Lock)과 비관적 락(Pessimistic Lock) (1) | 2023.10.10 |
|---|---|
| TreeMap과 LinkedHashMap의 차이와 사용예제 (1) | 2023.10.10 |
| 좋은 개발 문화란? 고민/생각 (0) | 2023.10.03 |
| 빅오 표기법(Big-O notation) (0) | 2023.10.03 |
| 자바 reflection의 동작원리와 장단점 (0) | 2023.10.03 |