도커를 사용해서 로컬서버에 스프링부트 프로젝트를 배포해보자!
크게 두 가지 방법이 생각났다.
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
로컬서버에 백엔드 배포 성공!
다음 해결할 문제
- 백엔드에 변경사항이 생길 때 마다 이미지를 빌드하고 올리고 내려받고 컨테이너관리해주고... 해야하나?
'Today I Run' 카테고리의 다른 글
'지피지기면 백전백승'의 반댓말은? (0) | 2025.03.23 |
---|---|
재귀쿼리에 대해 알아보자 (0) | 2024.09.13 |
로컬 우분투에 postgres 띄우기 (0) | 2024.08.21 |
[TroubleShooting] use --enable-preview to enable unnamed classes 에러 (+Java 19 이상) (2) | 2024.07.24 |
Facade Pattern 이해하고 서비스에 적용하기 (1) | 2024.07.03 |