작성
·
347
·
수정됨
0
일단...여러가지 배포 오류가 많이떠서 거의 2주간 배포에 시간 썼는데 여찌저찌 배포가 되긴 했어요..!
이번엔 질문이 좀 많아요..ㅎ
서버 api와 통신은 제대로 잘 되는데 자꾸 웹소켓 오류가 뜨는데 이거 무시해도 괜찮은 건가요?
서비스 동작하는데는 문제 없는 것 같은데 이런 오류가 계속 떠요.
백엔드와 데이터베이스 연결 pdf 파일 내용은 영상으로 안다뤄 주신거죠? 제가 도커쪽과 배포쪽은 정말 아예 처음 써보는거라 지식이 많이 부족한데, 제가 영상보고 이해하기로는 현재 ec2에서 깃 클론으로 모든 client와 server소스코드와 도커 컴포즈 파일까지 가져와서 거기서 pm2로 클라이언트랑 서버 모두 백그라운드로 실행하는 것으로 이해했거든요.
2-1. 왜 도커 파일을 client와 server에 각각 만들어줘서 도커컴포즈로 이미지 생성하도록 만드는건지 이해를 못했어요. 도커 파일에는 여러 패키지 설치하는 명령어(?)와 client를 실행시키는 명령어가 있던데 이 과정이 왜 필요한건지 이해를 못했습니다.ㅠㅠ 사실 저는 '백엔드와 데이터베이스 연결하기'라는 pdf에 있는 도커 파일로 변경했을때 배포 실패했다가 도커파일 싹 다 지우고 decker-compose.yml파일을 원래 기존 로컬에서 작성했던대로 냅두고, data-source.ts 파일의 host 부분도 그냥 "localhost"로 놔둔채 배포에 성공했거든요.
그래서 저 pdf 파일대로 client와 server에 도커파일을 만들고 도커 컴포즈 파일까지 변경한 후 도커 컴포즈 명령어 실행했을 때와 도커파일 없이 기존의 도커컴포즈 파일대로 배포했을 때와는 어떤 부분이 다른건지 궁금합니다.
ec2 인스턴스에서 깃 클론으로 가져온 client를 다시 npm run build:production하는 빌드과정을 보여주셨는데, 어짜피 pm2로 ecosystem.config파일을 백그라운드로 실행시킬거면 (이 파일에서 script: "npm run start:production"라는 명령어를 실행하도록 설정해줬으므로) client의 빌드 폴더 만드는 과정이 필요 없는거 아닌지요? (무지한 소리면 죄송합니다..ㅠ)
마지막으로, 인스턴스를 종료하고 컴퓨터를 끄더라도 도커가 종료되지 않고 계속 동작하는 것 같더라고요. 로그인 로그아웃이 동작하고 유효한 토큰인지 확인하는 api도 잘 동작했어요. 제가 생각했을 떄는 pm2로 서버와 클라이언트는 백그라운드로 실행시켰지만 도커는 포어그라운드로 동작시켜서 인스턴스 종료하면 데이터베이스와는 연결이 끊겨 제대로 동작을 안할 것이라 생각했는데 예상과는 달리 잘 동작하더라고요. 이건 도커의 특징인건지, 아니면 저희가 작성한 파일에 백그라운드로 동작하도록 하는 설정이 포함되어 있는건지.. 알려주시면 감사하겠습니다.
질문이 길고 갯수가 많은데 답변 기다리겠습니다..! 감사합니다.
답변 1
0
안녕하세요, 인프런 AI 인턴이에요. 웹소켓 오류에 대해서는 무시하기보다는 해결하는 게 좋습니다. 오류가 계속 뜬다면 서비스에 문제가 있을 수 있으니 확인해보시는 걸 권장해요. 이 부분은 개발자에게 직접 문의하시는 게 좋을 것 같아요.
백엔드와 데이터베이스 연결하기 부분은 동영상으로 설명을 드렸고, 도커와 배포 관련 지식이 부족하신 것 같아 도움이 필요하시군요.
2-1. 도커 파일을 client와 server에 각각 만드는 이유는 각각의 애플리케이션 독립성과 독립적인 개발 및 배포를 위해서입니다. 도커 파일에 있는 명령어들은 해당 애플리케이션에 필요한 패키지 설치와 실행에 필요한 명령어들입니다. 도커 컴포즈 파일은 각 도커 파일을 이미지로 만들고 연결하여 서비스를 실행시키기 위해서 사용됩니다.
추가적인 도움이 필요하시다면 해당 강의를 제공하는 지식공유자에게 질문해보시는 것도 좋을 것 같아요. 감사합니다.