Quarkus를 움직여 docker image를 AmazonECS로 움직일 때까지

6137 단어 ECRECSQuarkusAWS

다른 사이트



글을 쓰고 있었지만 끝났기 때문에 마이그레이션 한 기사 5
2019/03/16의 것

Quarkus



Java 프레임 워크.
특징으로서는 네이티브용의 바이너리를 생성해 기동이 매우 빠르다든가 그런

전제 조건


  • Java 8 이상
  • Maven 3.5.3 이상

  • 같다

    GraalVM



    GraalVM 설치
    .bash_profile 등으로 설정
    export GRAALVM_HOME=[インストールフォルダ]/Contents/Home
    

    신규 프로젝트



    Quarkus의 공식에 따라 프로젝트 작성 명령 실행
    mvn io.quarkus:quarkus-maven-plugin:0.11.0:create \
    -DprojectGroupId=org.acme \
    -DprojectArtifactId=getting-started \
    -DclassName="org.acme.quickstart.GreetingResource" \
    -Dpath="/hello"
    

    구현



    공식 시작 가이드에 따라 작성
    소스는 기본적으로도 들어 있기 때문에 그대로도 움직입니다.
    공식적으로는 API의 추가라든가 이렇게 하는 거 같은것이 써 있으므로 그대로 한다
    움직일 때 명령을 이해하는 것이 중요합니다.

    로컬 부팅
    mvn compile quarkus:dev
    

    jar 만들기
    mvn package
    

    jar 시작
    java -jar target/getting-started-1.0-SNAPSHOT-runner.jar
    

    네이티브 바이너리 만들기
    mvn package -Pnative
    

    네이티브 바이너리 시작
    ./target/quarkus-quickstart-runner
    

    컨테이너 생성
    mvn package -Pnative -Dnative-image.docker-build=true
    

    docker 빌드
    docker build -f src/main/docker/Dockerfile -t quarkus .
    

    실행
    docker run -i --rm -p 8080:8080 quarkus
    

    로컬이든 jar이든 바이너리이든 docker이든 동일하게 움직였습니다.
    $ curl http://localhost:8080/hello/greeting/quarkus
    hello quarkus
    

    AWS 측에 배포



    docker 이미지를 만들 수 있었기 때문에 AWS ECS에 배포까지 할 수 있습니다.

    ECR 작성



    새 리포지토리를 만들고 "quarkus"라는 이름으로 만들어보세요.

    이미지 push



    작성한 리포지토리의 "푸시 명령 표시"에 따라 명령 실행
    aws ecr get-login --no-include-email --region ap-northeast-1
    
    ## ログインコマンドが出るのでそのまま実行
    
    ## 作成したイメージをタグ付け
    docker tag quarkus:latest xxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/quarkus:latest
    
    ## push
    docker push xxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/quarkus:latest
    

    ECR에서 푸시되면 성공

    작업 만들기



    ECS에서 태스크 정의 작성
    이미지에 ECR에 정의된 것을 입력하여 생성
    Dockerfile의 EXPOSE를 괴롭히면 좋을지도 모르지만 기본값이 8080에서 받는 것 같기 때문에
    포트 매핑은 80 8080에서 설정







    클러스터 생성



    클러스터 만들기 선택
    EC2 첨부로 인스턴스 타입이나 인스턴스 수 등을 자유롭게 선택하여 작성
    EC2가 활성화될 때까지 속눈썹


    작업 실행



    작업 탭에서 작업 실행을 선택하여 실행


    조금 기다리면 RUNNING이 된다.


    ssh로 인스턴스에 들어가 확인
    80에서 받고 8080에 매핑됩니다.
    $ docker container ls
    CONTAINER ID        IMAGE                                                       COMMAND                  CREATED             STATUS              PORTS                  NAMES
    29c1fb97dc07        xxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/quarkus   "./application -Dqua…"   9 seconds ago       Up 8 seconds        0.0.0.0:80->8080/tcp   ecs-quarkus-5-quarkus-e491bef2eefec1fcfc01
    0187c98c619b        amazon/amazon-ecs-agent:latest                              "/agent"                 About an hour ago   Up About an hour                           ecs-agent
    

    연결 확인



    브라우저에서 보면
    http://[EC2のパブリックDNS]/hello/greeting/quarkus
    



    표시되었습니다!

    감상



    Quarkus의 기동은, 저기, 이미 기동하고 있는지의 감각이 될 정도로 빨랐다
    평소 Java를 사용하는 경우가 많지만 시작이 긴 것은 약속이었기 때문에 꽤 신선
    ECS는 처음 작성하는 데 몇 번이나 노력했지만 어떻게 든 좋았습니다.
    클러스터라든지 태스크라고 하는 것이 어떨까 요즘 힘들었다. . .
    그리고는 포트 매핑의 곳에서 처음에는 동적 매핑이라든가 하면 포트가 어긋나서 움직이지 않는다고 하는 것은 느긋하다. . .
    업데이트할 때
  • Java 쓰기
  • docker 이미지 만들기
  • ECR에 push
  • ECS에 대한 작업 정의 (리비전 생성)
  • 서비스 업데이트로 개정판 업데이트

  • 라는 느낌일까

    좋은 웹페이지 즐겨찾기