You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

백엔드 웹개발에 SCALA 언어를 선택하였다고 하면, 마이크로 모던 웹 서비스를위해서 PLAYFRAMEWORK+AKKA 요소를

사용할수가 있습니다. PLAYFRAMEWORK는 JAVA언어도 지원하지만, 주언어를 JAVA로 선택하였다고하면, SPRINGBOOT이 권장됩니다.

DOCKER는 이제 개발환경구축 운영환경구축에 필수 요소임으로 DOCKER 배포/실행까지 살펴보도록 하겠습니다.


필요플러그인

  • SBT
  • DOCKER


프로젝트 생성에서 실행 배포까지

Step0. 라이트벤드 제공 Play템플릿 선택하기

여기서는 Play Scala ChatRoom 을 선택하였으며 기본 MVC를 위한 뷰템플릿 + 웹소켓요소가 포함되어 있으며

웹소켓은 이제 모던웹에 필수요소이기때문에 기본으로 선택하였습니다.



Step1. 구성요소 받을때까지 기다리기

주요 application layout

  • controller : 웹의 접근 
  • filters : 웹요청에대한 정책설정을 할수 있으며, 여기서는 웹소켓에 관련 정책이 자동설정됩니다.
  • views : mvc의 뷰템플릿을 추가할수있으며, 여기서는 채팅 페이지의 기본 코드가 설정됩니다.
  • conf : playframework에 사용되는 각종 설정들
  • conf/routes : endpoint를 정의하고 대상 controller에 연결을 정의하는 라우터 설정입니다.


Step2. 컴파일및 실행

sbt는 스칼라프로젝트를 운영할시 메이븐과 유사한 심플하고 유용한 빌드툴입니다.

기본적으로 다음과 같은 명령을 사용할수가 있습니다.

  • compile : 스칼라 프로젝트를 컴파일합니다.
  • run : 스칼라 코드를 실행을 하며, 코드변경이 있을시 증분컴파일후 실행을 수행합니다. ( 개발환경 )
  • dist : 배포를 위한 최종 배포파일을 생성하며 target/universal/{프로젝트명}.zip 로 최종결과물을 만들며 /bin 에 jar를 실행하는 스크립트가 포함됩니다.


Step3. Docker Build 만들기

Dockerfile
FROM openjdk:8-jre
COPY target/universal/play-chatroom-scala-example-2.6.x /svc
EXPOSE 9000 9443
CMD /svc/bin/play-chatroom-scala-example -Dhttps.port=9443 -Dplay.crypto.secret=secret

프로젝트 루트에 Dockerfile을 위와같이 만들어 줍니다. sbt dist후  universal에 생성된 zip의 압축을 푼후 ( unzip으로 자동화가능) 수행이가능한

도커 명령이며(도커가 셋팅이되었다고 가정합니다.) 

위 명령은 jre가 필요하고 9000(play 웹기본포트), 9443(https) 두가지 포트를 사용하는 실행가능한 scala 웹서비스의 컨터이너를 작성하겠다란 의미입니다.

  

Dockerfile
docker build -t playchatroom .

위 명령은 Dockerfile을 참고 하여 playchatroom 이라는 실행가능한 도커 이미지를 생성해줍니다.

D:\project\scala2>docker images

REPOSITORY                     TAG                      IMAGE ID            CREATED             SIZE

playchatroom                   latest                   88e0b3cd5a14        10 minutes ago      484MB

openjdk                        8-jre                    66bf39162ea7        4 weeks ago         443MB

openjdk 를 베이스로 playcharroom 이라는 이미지 생성이 되었습니다. 

Step4. Docker 실행하기

Dockerfile
docker run -it -p 9000:9000 -p 9443:9443 --rm playchatroom

실행되는 도커 컨테이너는 격리된 네트워크로 포트 접근이 기본적으로 불가능하며, 도커의 본체에 포트포워딩 경로를 통해

접근을 시킬수가 있습니다. 여기서는 도커의 본체는 localhost이며  위 실행명령은 http://localhost:9000 으로 접속가능하게해줍니다.


인텔리J가 제공하는 Docker 플러그인을 통해서도 컨테이너 제어가가능하며

위 컨테이너 목록은 격리된 도커 서비스이며 레디스/몽고db/mysql/kafka 등을 모두 동일한 가상 네트워크에서 포트충돌없이

간편하게 구동후 상호연동 개발이 가능하는것을 의미하며 동일한 구조로 유사한 추가 개발환경구성및 운영환경을 또는 클라우드환경에

손쉽게 구성할수 있게됩니다.








  • No labels