Quarkus를 움직여 docker image를 AmazonECS로 움직일 때까지
다른 사이트
글을 쓰고 있었지만 끝났기 때문에 마이그레이션 한 기사 5
2019/03/16의 것
Quarkus
Java 프레임 워크.
특징으로서는 네이티브용의 바이너리를 생성해 기동이 매우 빠르다든가 그런
전제 조건
같다
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는 처음 작성하는 데 몇 번이나 노력했지만 어떻게 든 좋았습니다.
클러스터라든지 태스크라고 하는 것이 어떨까 요즘 힘들었다. . .
그리고는 포트 매핑의 곳에서 처음에는 동적 매핑이라든가 하면 포트가 어긋나서 움직이지 않는다고 하는 것은 느긋하다. . .
업데이트할 때
라는 느낌일까
Reference
이 문제에 관하여(Quarkus를 움직여 docker image를 AmazonECS로 움직일 때까지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sireikan/items/28812d27c2321cc03141텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)