Docker AWS EC2 deploy

devty·2023년 6월 8일
0

DevOps

목록 보기
2/11

대략적인 과정

  1. dockerfile을 build해서 docker image 파일을 생성한다.

  2. docker image 파일을 docker hub에 push한다.

  3. aws ec2 서버에 docker hub에 존재하는 docker image 파일을 pull 받아온다.

  4. docker run 명령어를 통해 docker image 파일을 실행한다.

실행 과정

  1. DockerFile이라는 명으로 root directory에 추가한다.

    FROM amazoncorretto:17
    ARG JAR_FILE=build/libs/*.jar
    COPY ${JAR_FILE} app.jar
    ENTRYPOINT ["java","-jar","/app.jar"]
  2. intellij에 terminal에서 ./gradlew build -x test를 입력해준다.

    • -x test를 붙인 이유는 test는 실행하지 않겠다는 뜻이다.
    • permission denied가 나온다면 권한이 없으므로 추가해준다.
    • chmod +x gradlew로 권한을 추가한다.
  3. 권한을 준 후 ./gradlew build -x test 입력한다.

  4. 그럼 밑 사진처럼 snapshot.jar가 만들어진다.

  5. 도커 허브 사이트를 들어가서 회원가입 후 Repository를 만들어준다. github와 유사함.

    Docker Hub Container Image Library | App Containerization

  6. 로그인 후 create repository를 들어가서 새로운 repository를 만든다.

  7. repository에 이름을 지정하고 public으로 설정하여 repository를 만든다.

  8. 이제 dockerfile -> docker image로 빌드를 진행한다.

    • docker build --build-arg DEPENDENCY=build/dependency -t taeyun1215/mkc --platform linux/amd64 . → . 까지 넣어줘야한다. taeyun1215/mkc부분은 dockhub ID/docker repo이다.
    • m1이상일 경우 뒤에 --platform linux/amd64 추가해줘야한다.
  9. 위 명령어를 입력하면 다음과 같이 나오게 된다.

  10. 위에서 생성한 docker image파일을 docker hub에 push한다.

  11. push 명령어는 docker hub의 repository에서 볼수 있다.

  12. docker push taeyun1215/mkc를 입력하면 밑과 같이 이미지가 push된 걸 볼수 있다.

중간 검점

  • 11번까지 하였다면 docker hub에 docker image를 push까지 한것이다.
  • 이제 남은 건 aws ec2 서버에 docker hub에 존재하는 docker image를 pull 받고 docker run 시킨다.
  1. 인스턴스를 만들 때 생성한 .pem 키의 위치를 확인한다.

  2. ssh-keygen 명령어를 입력하여 ssh key가 /User/taeyun/.ssh 폴더에 생성된다.

  3. .pem 키를 /User/taeyun/.ssh 폴더 안에 추가한다.

  4. chmod 600 ec2test.pem를 입력한다.

    • pem 키의 권한 변경을 위한 작업.
  5. vim config 명령어를 입력하여 새로운 파일을 만들고 수정한다.

    • Host → 내가 지정하고 싶은 이름으로 지정. 서비스(도메인) 명이다.
    • HostName → 인스턴스 세부정보에서 볼 수 있는 퍼블릭 IPv4 DNS를 적어준다.
    • User → 기본적으로 ec2 접속에 이름은 ec2-user이다.
    • IdentityFile → 키가 있는 위치를 지정한다.
  6. chmod 700 config를 입력하여 권한을 변경한다.

  7. 위에서 지정한 서비스(도메인) 명으로 ec2를 실행시킨다.

  8. 앞전에 push한 docker image를 pull 받아온다.

  9. 도커를 실행시킨다.

  10. 퍼블릭 IPv4 주소를 입력하고 8080인 포트번호를 붙이고 url을 입력한다.

    • https://3.36.49.89:8080/sample를 처음에는 입력했는데 Error parsing HTTP request header 오류가 발생하였다.
    • 해당 오류는 https → http로 바꿔서 수정해주었다.
    • 오류가 뜬 원인은 ec2 설정에 보안그룹을 http는 넣었는데 https를 넣지 않아서 였던 것 같다.
  11. 위 상황까지 왔다면 전체적인 로직은 한번 다 돌았다.

profile
지나가는 개발자

0개의 댓글