개발일기

docker spring build 하여 배포하기 본문

photocard backend server 개발일기

docker spring build 하여 배포하기

한둥둥 2024. 6. 6. 15:10

 

FROM eclipse-temurin:17 AS builder
WORKDIR /app
COPY gradlew .
COPY gradle gradle
COPY build.gradle .
COPY settings.gradle .
COPY src src
RUN chmod +x ./gradlew
RUN ./gradlew bootJar
RUN ls -l /app/build/libs #debuggin line

FROM eclipse-temurin:17
WORKDIR /app
COPY /build/libs/*.jar photocard.jar
COPY src/main/resources/photocard-firebase-adminsdk.json /app/photocard-firebase-adminsdk.json #firebas기본키 설정부분..
RUN ls -l /app

ENTRYPOINT ["java","-jar", "photocard.jar", "-Dspring.profiles.active=dev", "-Djava.security.egd=file:/dev/./urandom"]

VOLUME /tmp

 

Dockerfile은 작성 완료하였다. 

docker build -t hanseu9839/back .

 

hanseu9839/back 은 hub에 올려 줄 이름을 지정해 준 것이다.  각자에 올리고 싶은 이름에 맞게 올려준다. 

이런식으로 작성해야 나중에 ci/cd할 때, 편하기에 해당 방식으로 진행

 

docker push hansue9839/back

 

도커에 올릴 이미지 이름을 뒤에다가 작성하였다.. 굳굳 

 

이렇게하고 compose가 있는 위치에서  docker-compose를 하면 완료다.. complete 

 

오류 

1. 권한 잘못 주어 기본키 날려먹음.. home에서 작업하지말자.. 그게 정신건강에도 이롭고 home에서 작업하는건 아닌거같음 

COPY src/main/resources/photocard-firebase-adminsdk.json /app/photocard-firebase-adminsdk.json

이녀석 덕분에 피똥싸고 우선적으로 파일을 읽게 해주려고 권한 전체에서 홈에다가 chmod 777을 때려 버렸는데 이러면 ssh 인증을 위한 authorize_keys가 맛탱이가 가버린다.

덕분에 ci/cd까지 작성하고 있는 오라클 서버 말아먹었다 ㅋㅋ.. 사실 다른 분에게 도움을 요청했는데 그분이 인스턴스 삭제함 

오히려 긍정적인 마인드로 위기는 기회로 시전해버림 사실 전에 작성할 때, 잘 모르고 써서 좀 블로그도 작성 못했는데 오히려 좋아...

 

근데 aws 에서도 똑같은 짓해서 말아먹을 뻔했으나 중꺾마 중요한건 꺾이지 않는 마음이다. 심호흡하고 바로 달린 결과 아래 글을 찾아 원인을 파악하여 해결 할 수 있었다. 참고로 aws는 웹에서 서버를 접속할 수 있게 지원해주어 개꿀이다.. 역시 aws인가..? 

오라클 이녀석들 문의해도 답변도 없고 더러워서 퉤..

https://repost.aws/knowledge-center/ec2-linux-fix-permission-denied-errors

 

Troubleshoot "Permission denied (Publickey)" or "Authentication failed, Permission denied" errors when accessing an EC2 instance

I'm receiving "Permission denied (publickey)" or "Authentication failed, permission denied" errors when accessing my Amazon Elastic Compute Cloud (Amazon EC2) instance.

repost.aws

이 글을 보고 권한을 다시 주어 정상적으로 해결하였다. 

사실 이걸 해결하기위해서 기본키도 까보고 별 짓을 다했는데... 그것은 헛다리 짚어 생략..

 

2. 도커 컴포즈를 띄울 때, jar file을 찾을 수 없는 에러 

./graldew build ./gradlew bootJar 둘 다 하였을 때, 정상적으로 들어가고 

RUN ls -l /app/build/libs # Debugging line

dockerfile에 넣어주어 확인 결과 잘만 있었다.. 

그래서 copy쪽 부분을 위에와 같이 한참동안 작성하여 바꿔준 결과 해결 할 수 있었음.. 

왜 인지 모르겠으나 docker-compse up -d를 통해서 띄워줌 근데 이떄 멍청하게 push해야하는데 pull해서 삽질하여 오래걸림.. 진짜 허무했음.. 오류가 계속 겹치니 눈에 뵈는게 없었나보다. 왜냐면 잘 작성한거 같은데 오류뜨니깐 정신 나갈꺼같았음..