Today I Run

로컬 우분투서버에 백엔드 배포하기

조핑구 2024. 8. 24. 23:57

도커를 사용해서 로컬서버에 스프링부트 프로젝트를 배포해보자!

 

크게 두 가지 방법이 생각났다.

1. 서버 컴퓨터에서 프로젝트를 클론받아 도커 이미지 만들고 배포하기

2. 내 컴퓨터에서 도커를 깔아 이미지 만들고 도커허브에 이미지 push 하기

 

서버 컴퓨터는 ssh로 접근하기때문에 깃 형상관리나 프로젝트 상태를 눈으로 (GUI로) 감시하기 힘들기 때문에 2번으로 진행시켜야겠다.

 

일단 도커 파일을 작성해야한다.

FROM openjdk:21

WORKDIR /app

COPY build/libs/app-0.0.1.jar app.jar

EXPOSE 8080

ENTRYPOINT ["java", "-jar", "app.jar"]

 

 

내 컴퓨터에서 이미지를 말아서 올려보자

docker build -t [태그명] .

docker push [도커허브아이디]/[레포명]

 

 

서버에서 이미지를 pull 받아 컨테이너를 띄워보자

docker pull [도커허브아이디]/[레포명] 

docker run -d -p 8080:8080 [도커허브아이디]/[레포명]

 

 

그런데 에러를 만났다!

 

The requested image's platform (linux/arm64/v8) does not match the detected host platform (linux/amd64/v3) and no specific platform was requested 33ca21f8e139bb642044927b0cb558c15df17280b40a06e4957e4f12d1433ddc

 

내가 push 한 이미지와 서버에서 돌릴 수 있는 이미지 플랫폼이 일치하지 않는다는 에러였다. 이미지를 빌드할 때 명령어를 추가해주면 해결된다.

docker build --platform linux/amd64/v3  -t [태그명] .

 

+ 아 우리 로컬서버에는 방화벽이 있었지! 8080도 열어주자

sudo ufw allow 8080

 

로컬서버에 백엔드 배포 성공!

 

다음 해결할 문제

- 백엔드에 변경사항이 생길 때 마다 이미지를 빌드하고 올리고 내려받고 컨테이너관리해주고... 해야하나?