beyond-sw-camp/beyond-sw-camp-be01_last-dance

[T2] AWS CodeDeploy 기존 실습 때와 같은 문제 발생 중입니다.

Closed this issue · 6 comments

  • #108
  • SpringBoot 프로젝트를 기존 실습처럼 CodeDeploy 환경을 구성중에 같은 문제가 발생하였습니다.
  • 기존 문제 해결 방법처럼 인스턴스 스펙을 t2.small로 변경하였습니다.
  • 기존 실습과 차이점은 저희는 Maven build 환경을 사용하고 있어 관련 빌드 커맨드와 명령어 실행 위치를 저희 프로젝트 환경에 맞게 조금 수정하여 사용하였습니다. 확인 부탁 드리겠습니다.
  • https://github.com/T2-Papillon/Spring/tree/AWSDeploy_v0.1.2/choi

Codedeploy 스크립트 오류 로그

[stdout]#5 extracting sha256:3d6fa00702eb0aa7934afc50cb28145402935b385451bcb6ae891ecc0d4a9b90 0.1s
[stdout]#5 sha256:dc145c2c40b090019607ad8d5618e1026c57507c6622d156be1870fa790a7339 39.85MB / 144.14MB 1.2s
[stdout]#5 sha256:dc145c2c40b090019607ad8d5618e1026c57507c6622d156be1870fa790a7339 57.67MB / 144.14MB 1.4s
[stdout]#5 sha256:dc145c2c40b090019607ad8d5618e1026c57507c6622d156be1870fa790a7339 65.34MB / 144.14MB 1.5s
[stdout]#5 sha256:dc145c2c40b090019607ad8d5618e1026c57507c6622d156be1870fa790a7339 79.69MB / 144.14MB 1.7s
[stdout]#5 sha256:dc145c2c40b090019607ad8d5618e1026c57507c6622d156be1870fa790a7339 101.71MB / 144.14MB 1.9s
[stdout]#5 sha256:dc145c2c40b090019607ad8d5618e1026c57507c6622d156be1870fa790a7339 112.34MB / 144.14MB 2.1s
[stdout]#5 sha256:dc145c2c40b090019607ad8d5618e1026c57507c6622d156be1870fa790a7339 121.63MB / 144.14MB 2.2s
[stdout]#5 sha256:dc145c2c40b090019607ad8d5618e1026c57507c6622d156be1870fa790a7339 139.46MB / 144.14MB 2.4s
[stdout]#5 extracting sha256:3d6fa00702eb0aa7934afc50cb28145402935b385451bcb6ae891ecc0d4a9b90 1.7s done
[stdout]#5 sha256:dc145c2c40b090019607ad8d5618e1026c57507c6622d156be1870fa790a7339 144.14MB / 144.14MB 4.4s done
[stdout]#5 extracting sha256:dc145c2c40b090019607ad8d5618e1026c57507c6622d156be1870fa790a7339 0.1s
[stdout]#5 extracting sha256:dc145c2c40b090019607ad8d5618e1026c57507c6622d156be1870fa790a7339 3.9s done
[stdout]#5 extracting sha256:65413771e18cd2c82e4675596f5160e42af611ff7d9eabbe7621c2d626bd9b6b done
[stdout]#5 extracting sha256:80f39855dd57cb06f224fd5f6e6327f6551e336425c751b77c2f53f11ba7ce94 done
[stdout]#5 DONE 8.6s
[stdout]
[stdout]#6 [rest 2/2] COPY target/*.jar app.jar
[stdout]#6 ERROR: lstat /var/lib/docker/tmp/buildkit-mount3496074400/target: no such file or directory
[stderr]failed to solve: lstat /var/lib/docker/tmp/buildkit-mount3496074400/target: no such file or directory
[stdout]------
[stdout] > [rest 2/2] COPY target/*.jar app.jar:
[stdout]------

appspec.yml

version: 0.0
os: linux
files:
  - source: /papplan
    destination: /home/ubuntu/app/papplan
    overwrite: yes

permissions:
  - object: /papplan
    pattern: "**"
    owner: ubuntu
    group: ubuntu
    mode: 744

hooks:
  AfterInstall:
    - location: papplan/stop.sh
      timeout: 60
      runas: ubuntu
  ApplicationStart:
    - location: papplan/start.sh
      timeout: 60
      runas: ubuntu

docker-compose.yml

  • DB를 별도 인스턴스로 사용중이므로 기존 실습 코드에서 제외했습니다.
name: papplan
services:
  proxy:
    image: nginx
    volumes:
      - ./nginx/conf:/etc/nginx/conf.d
    ports:
      - "8888:80"
    environment:
      - NGINX_HOST=localhost
      - NGINX_PORT=80
    depends_on:
      - rest
  
  rest:
    build: .
    ports:
      - 7778:8080
    platform: linux/amd64

Dockerfile

FROM eclipse-temurin:17-jdk-alpine
# COPY build/libs/*.jar app.jar
COPY target/*.jar app.jar
ENTRYPOINT ["java","-Dspring.profiles.active=dev","-jar","app.jar"]

핵심오류는 아래와 같고 ...

[stdout]#6 [rest 2/2] COPY target/*.jar app.jar
[stdout]#6 ERROR: lstat /var/lib/docker/tmp/buildkit-mount3496074400/target: no such file or directory

수정 1

  • 인스턴스 안에서 ubuntu owner가 하위 디렉토리에서 모든 파일을 생성하고 실행 파일을 실행할 수 있도록 수정
version: 0.0
os: linux
files:
  - source: /papplan
    destination: /home/ubuntu/app/papplan
    overwrite: yes

permissions:
  - object: /
    pattern: "**"
    owner: ubuntu
    group: ubuntu

hooks:
  AfterInstall:
    - location: papplan/stop.sh
      timeout: 60
      runas: ubuntu
  ApplicationStart:
    - location: papplan/start.sh
      timeout: 60
      runas: ubuntu

수정 예정

  • gradle wrapper처럼 mvn-wrapper 적용하여 jar 생성이 인스턴스 안에서 필요없도록 수정
  • mvn-wrapper 적용
$ mvn -N io.takari:maven:wrapper
  • start.sh
#!/usr/bin/env bash

cd /home/ubuntu/app/papplan

# Maven 프로젝트에서 사용할 겨우
./mvnw package

# ./gradlew bootJar

sudo docker compose -f docker-compose.yml up -d
  • 인스턴스 내부에서 실행할 수 있는 jar 파일을 찾지 못하여 생기는 오류였습니다.

추가 고려 사항

  • .github/workflows 밑의 설정파일에 히든파일 푸시를 무시하는 옵션이 있으니 오류 발생 시 확인해 보시기 바랍니다
 --ignore-hidden-files \

해결법 까지 추가해주셔서 감사합니다.