개발자
Gitlab과 유사하게 작동하는 Git을 사용한 CI 웹 어플리케이션을 만들고 있습니다. API 서버는 spring boot + JGit을 사용하여 구축하여 웹 서버를 띄우고, 개발자가 CI 서버에 접근하여 git clone 또는 git push 를 해야 하기 때문에 ssh 서버를 띄워서 백엔드에서 총 두개의 서버를 구동시켜야 하는 상황입니다. 두 서버는 서로의 정보를 필요로 하기 때문에 파일 시스템을 공유해야하구요. 설치형 어플리케이션이기 때문에 docker를 사용하여 플랫폼 독립적으로 설치를 할 수 있게 하려고 했어요. 근데 이 서버를 두개 띄우는 시나리오가, Production 환경에서는 spring boot 서버를 jar 파일로 만들어서 파일로 나오게 된다면, 따로 스크립트 파일을 작성해서 ssh 서버와 spring boot 서버를 한 컨테이너에서 실행시키게 할 수는 있을 것 같습니다. 하지만 Intellij를 사용하는 개발환경에서는 한 컨테이너로 하기가 좀 어렵더라구요 지금까지 시도해본것은 1. 한 컨테이너에서 ssh 서버를 띄운 후 Intellij 원격 개발 기능을 사용하여 컨테이너에 ssh로 붙는다. -> Intellij에서 코드 작성 속도가 너무 느립니다. 그리고 버그가 너무 많아서 못쓸 지경이예요. 2. Intellij Docker 플러그인을 사용한다. Intellij 에서 이미지를 지정해서 spring boot를 로컬에서 돌리는 것처럼 만들어주는것이 있더라구요. -> 이 방법으로는 한 컨테이너에 spring boot 하나만 돌릴 수 있는 것 같았습니다. (아니라면 알려주세요 ㅠㅠ) 2-1. 컨테이너를 ssh 서버용, spring boot 개발 서버용 두개를 작성하여 Intellij Docker 플러그인을 사용하여 spring boot 개발 서버를 돌리고 둘을 Volume으로 공유한다. -> 이 방법이 가장 정석인 것 같긴 한데, ssh 서버에서 생성한 파일과 spring boot 에서 생성한 파일 간에 접근 권한 이슈가 있을 것 같아서 이렇게 하는게 맞나 싶습니다. 이렇게 한다면 Production 환경과 다를 수 있으니 Production도 개발환경과 유사하게 두 컨테이너로 운용해야겠지요? 3. (아직 시도는 안해봤지만) 개발 환경 자체를 리눅스 데스크탑을 사용하여 개발한다. (or wsl을 사용한다) -> 가장 간단한 방법이겠지만 이것 또한 Docker를 사용하려는 Production 과 환경이 다를 수 있어서 고민이 됩니다. 제가 원하는건 딱 이거인 것 같아요. Intellij에서 실행버튼 하나를 딱 누르면 ssh 서버도 띄워지고, spring boot 개발서버도 띄워지고. 여기까지가 제 고민입니다.. 어떻게 개발 환경을 꾸리는게 좋을까요…? 아니면 제가 미처 생각하지 못한 방법이 있으면 말씀해주시면 감사드리겠습니다. 긴 글 읽어주셔서 감사합니다. Docker 라는걸 이제 막 사용하기 시작해서 모르는 것 투성입니다. 도움 부탁 드려요…!
답변 1
ssh 서버라고 말씀하신 서버의 용도가 무엇인지 궁금합니다. 그냥 리눅스 서버에 붙어서 명령어를 치려는 용도인가요? 만약 그렇다면 프로세스가 하나 더 있을 필요가 없이 docker exec 명령을 사용하면 됩니다.
이정윤
작성자
소프트웨어 개발자 • 2024년 03월 08일
헐 exec을 생각 못했네요.. 시도해보겠습니다.
이정윤
작성자
소프트웨어 개발자 • 2024년 03월 08일
ssh 서버는 깃랩과 같이 git 서버를 리모트로 등록하기 위해 필요합니다
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!