프로젝터와 Docker를 사용하여 JetBrains IDE 실행 방법

에서 설명한 대로 프로젝터는 JetBrains의 원격 개발 솔루션입니다.이것은 완벽한 해결 방안은 아니지만, 그것은 그것의 용도가 있다.본 논문에서, 우리는 Docker를 사용하여 투영기가 있는 IDE를 어떻게 운행하고, 그것들을 어떻게 연결하는지 보게 될 것이다.
프로젝터는 클라이언트 - 서버 솔루션입니다.우리는 클라이언트와 서버 두 구성 요소를 수동과 독립적으로 배치해야 한다.고맙습니다. Docker는 서버 사이드 배치를 크게 간소화했습니다.특히 내가 DockerHub에서 관리하는 그림을 사용한다면!

프로젝터 서버


프로젝터 서버는 IDE, 코드, 구축 및 IDE를 통해 개발될 수 있는 응용 프로그램을 호스팅하는 시스템에 배치됩니다.그래서 그것은 당신의 업무 장소에 있는 헤더 서버나 비슷한 클라우드 실례가 될 수 있다.호스트에 Docker가 설치되어 있어야 합니다.도움이 필요하면 official guide를 따르십시오.
Projector를 사용하여 선택한 IDE를 시작하려면 서버 셸(SSH를 통과할 수 있음)에 연결하고 다음 명령을 실행합니다.
docker run --rm -p 8887:8887 --name <container-name> projectorimages/<Image-Name>
<Image-Name>를 필요한 프로그램의 이름으로 바꾸고 <container-name>를 필요한 식별자로 바꿉니다.DockerHub에서 최신 안정적인 버전을 다운로드하고 호스트의 8887 포트를 수신하는 컨테이너를 시작합니다.예를 들어, 컨테이너 이름 IDEA Community에서 IntelliJ IDEA Community를 시작하려면 다음과 같이 하십시오.
docker run --rm -p 8887:8887 --name idea-community projectorimages/projector-idea-c
DockerHub에서 사용 가능한 이미지와 버전 목록을 찾습니다.

프로젝터 클라이언트


클라이언트에서 브라우저(태블릿이나 크롬북일 수 있음)를 사용하거나 JetBrains에서 프로젝터 클라이언트를 다운로드할 수 있는 두 가지 클라이언트 옵션이 있습니다.

브라우저


브라우저에서 새 옵션 카드를 열고 위에 배치된 서버의 주소, 즉 포트 8887로 이동합니다.따라서 서버가 IP 192.168.1.3에 있는 경우 브라우저 주소 표시줄에 http://192.168.1.3:8887을 입력합니다.이것은 프로젝터에 연결되어 익숙한 아이디어 인터페이스를 보여 줍니다.
브라우저의 IntelliJ IDEA

프로젝터 클라이언트


JetBrains는 Electron를 기반으로 프로젝터 클라이언트를 개발했습니다.작성자의 권장사항blog post에 따라 클라이언트 컴퓨터에 설치하도록 선택할 수 있으며 브라우저에서 사용할 수 없는 바로 가기를 지원합니다.here에서 Windows, Linux 또는 Mac의 최신 버전을 다운로드하거나 JetBrains 도구 상자(설치된 경우)를 통해 다운로드할 수 있습니다.
프로젝터 클라이언트를 시작하면 입력 필드와 큰 연결 단추를 받을 수 있습니다.브라우저에서처럼 HTTP 주소와 포트를 입력하여 IDE에 연결해야 합니다.

연결 후에는 IntelliJ의 기본 실행과 매우 가깝게 작동합니다.

프로젝터 컨테이너 저장 상태


본문에서 시작하는 용기를 멈추면 IDE로 만든 모든 데이터 (코드, 다운로드한 플러그인, 설정, 허가증) 를 잃어버립니다.물론, 이것은 바람직하지 않습니다. 왜냐하면 우리는 서버가 IDE를 다시 시작하거나 업데이트한 후에 신속하게 작업을 회복하기를 희망하기 때문입니다.우리는 서버의 폴더를 사용하여 용기의 모든 데이터를 저장하고 미래의 용기에 불러올 수 있다.따라서 먼저 홈 폴더와 같은 디렉터리를 만들고 용기에 불러오는 /home/projector-user 위치를 사용합니다.
mkdir ~/projector_data
docker run --rm -p 8887:8887 -v ~/projector_data:/home/projector-user --name idea-community projectorimages/projector-idea-c

동일한 서버에서 여러 IDE 실행


개발할 때 여러 IDE를 실행해야 하는 경우가 많습니다.예를 들어 WebStorm의 백엔드와 프런트엔드에서 PyCharm을 자주 실행합니다.프로젝트러로 이 점을 실현할 수도 있고, IDE가 같은 파일에서 일할 수 없기 때문에 같은 디렉터리로 데이터를 저장할 수도 있다.
각 IDE를 다른 호스트 포트에 바인딩하면 두 컨테이너를 동일한 호스트 포트에 바인딩할 수 없다는 점에 유의해야 합니다.그래서 8887의 PyCharm과 8888의 WebStorm을 연결할 수 있습니다.컨테이너를 시작하는 방법은 다음과 같습니다.
docker run --rm -p 8887:8887 -v ~/projector_data:/home/projector-user --name pycharm-community projectorimages/projector-pycharm-c
docker run --rm -p 8888:8887 -v ~/projector_data:/home/projector-user --name webstorm projectorimages/projector-webstorm

동일한 IDE에서 여러 항목 작업


이것은 프로젝터의 가장 큰 문제다.한 IDE에서 두 개 이상의 항목을 처리하려면 각 항목을 각 창에서 열어야 합니다.프로젝터도 마찬가지지만 두 IDE 창이 같은 브라우저 탭이나 클라이언트 인스턴스에서 열립니다.각 IDE 창에 별도의 클라이언트를 제공할 수는 없습니다.즉, Ctrl+Alt+[및 Ctrl+Alt+] 단축키를 사용하여 같은 탭의 창을 전환해야 합니다.더군다나 창문이 하나하나 걸린 것 같은 경우가 많다.아니면 멀티스크린 설정을 이용할 수 없습니다.
열려는 항목마다 새 프로젝터 서버를 시작하려고 할 수도 있지만, 그 자체가 단점이 있습니다.첫 번째 컨테이너가 파일을 잠그고 다음 컨테이너에 대한 액세스를 금지하므로 두 컨테이너에 대해 동일한 디렉토리로 마운트할 수 없습니다.다른 마운트 지점을 사용할 수 있지만 나중에 모든 IDE 설정, 라이센스 및 플러그 인을 다시 입력하고 나중에 프로젝트를 다시 열 때 사용할 마운트 지점을 기억해야 합니다.이것은 정말 번거롭다.

IDE를 새 버전으로 업데이트


상기 명령을 사용하면, 기본적으로 'latest' 라고 표시되어 있기 때문에 최신 docker 그림을 다운로드한 것을 의미합니다.새 버전을 사용할 수 있을 때, 실행 중인 용기를 멈추고, 최신 이미지를 다시 끌어와 다시 시작해야 합니다.
docker stop pycharm-community
docker pull projectorimages/projector-pycharm-c
docker run --rm -p 8887:8887 -v ~/projector_data:/home/projector-user --name pycharm-community projectorimages/projector-pycharm-c
또는 DockerHub에 제공된 레이블을 사용하여 실행 중인 버전을 더 많이 제어할 수도 있습니다.
주의해야 할 점은 다음에 컨테이너를 다시 시작할 때 업데이트가 손실되기 때문에 IDE 프롬프트에서 새 버전을 다운로드해서는 안 된다는 것입니다.

결론


프로젝터는 원격 개발의 해결 방안으로서 나에게 복잡한 느낌을 남겼다.만약 당신이 이러한 단점을 참을 수 있다면, 그것은 유용할 것이다. 진정한 다중 프로젝트 지원이 없고, 네트워크 조건을 바탕으로 하는 간혹 지연되고, 번거로운 수동 설정과 유지보수가 없다.그것은 VScode의 원키 기적에 훨씬 뒤떨어진다.하지만 JetBrains IDE가 VS코드(Java 지원, 작업 자동화, 재구성, 플러그인)에서의 장점을 받아들이는 것을 배웠다면 더 좋은 것을 사용할 수 있도록 노력하는 것이 가치가 있을 것이다.
만약 원격 서버가 끝이 없는 것이 아니라면, 저는 IntelliJ를 원격으로 실행하고 SSH X-Forwarding을 사용하여 마른 클라이언트에서 UI를 얻는 데 더 좋은 경험을 가지고 있습니다.
또는 클라이언트가 충분하면 프로젝트를 인덱스하고 구축할 수 있고 원격 서버로만 프로그램을 실행하거나 디버깅할 수 있다면 새로운 (2021.1 버전) Run Targets 기능을 고려할 수 있습니다. 이것은 희망적입니다.

좋은 웹페이지 즐겨찾기