먼저 https://hub.docker.com/ 도커허브에 가서 회원가입을 하고 로그인을 합니다.
그 후 레파지토리를 클릭해 새로운 repository를 생성해 줍니다.
레포를 생성했다면 아래 사이트를 들어가서 사진처럼 각자 OS에 맞는 도커를 설치하시면 됩니다.
https://docs.docker.com/desktop/install/windows-install/
도커를 설치하면 시스템 상태에 따라 재시작해야 할 수도 있으니 close 버튼을 누르기전 잘 저장해 놓으시길 바랍니다.
도커를 설치하고 열었는데 위와같은 에러 메세지가 보이길래 저기 나온 주소를 타고 들어가서 필요 스텝들을 진행해 주었습니다.
step 1
PowerShell을 관리자 권한으로 실행하고 아래 코드를 입력
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
step 2
PowerShell에서 아래 코드를 입력.
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
step 3
• x64 머신용 최신 WSL2 Linux 커널 업데이트 패키지
위 패키지를 설치하고
PowerShell을 재시작하고 아래 코드를 입력.
systeminfo | find "System Type"
뭔가 잘못 진행한거 같긴 하지만 위와같이 하니까 에러가 더이상 뜨지 않게 되었습니다.
이제 터미널에서 아래 코드를 입력하고 localhost로 접속하면 잘 실행됨을 볼 수 있습니다.
docker run -it --rm -p 80:80 docker/getting-started
실행 유무를 확인했으니 본격적으로 도커를 활용해 배포를 시작해 보겠습니다.
우선 프로젝트 내부에 Dockerfile을 만들어 줍니다.
도커 파일 내부에 아래 코드를 작성해 줍니다.
FROM openjdk:17-jdk-alpine
ARG JAR_FILE=build/libs/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
#ENTRYPOINT ["java","-jar","-Dspring.profiles.active=prod","/app.jar"]
#=> 설정파일을 분리해서 사용할 때
#java -jar -Dspring.profiles.active=prod app.jar
그런 다음 jar파일을 생성해주고 cmd 창에서 해당 프로젝트 레포로 이동 후 아래와 같은 명령어를 입력해 도커 파일을 도커 이미지로 빌드해줍니다.( 맨뒤에 한칸띄우고 . 넣어야합니다.)
// gradle
docker build --build-arg DEPENDENCY=build/dependency -t 도커허브 ID/Repository --platform linux/amd64 .
// maven
docker build -t 도커허브 ID/Repository --platform linux/amd64 .
window는 “--platform linux/amd64 .” 이부분을 작성하지 않아도 됩니다.(mac만 작성)
그리고 cmd 창에서 docker login을 입력해 로그인을 한 뒤 위 명령어를 입력해 도커허브에 push해주면 되는데 오류가나길래 tagname을 빼고 입력해줬더니 이미지가 도커허브에 잘 들어간것을 확인할수 있었습니다.
그다음 우분투를 열고 ec2 서버에 접속한 후 아래 코드를 차례대로 입력하면 배포가 완료된것을 확인할 수 있습니다.
//도커 설치
curl -sSL https://get.docker.com/ | sh
//도커 실행
sudo systemctl start docker
//도커 허브에 있는 이미지파일 pull
sudo docker pull osy9536/hanghaebnb
//도커 이미지로 스프링 부트 배포
sudo docker run -p 8080:8080 osy9536/hanghaebnb
참고자료
[Docker] Spring Boot + Docker + AWS EC2 배포하기(MacOS M1)
'배포운영' 카테고리의 다른 글
[스프링] github actions에 Chat GPT 코드리뷰 기능 추가하기 (0) | 2023.03.28 |
---|---|
[스프링] 도커(docker) + EC2 + github actions 배포 (0) | 2023.03.12 |
도커(docker)란? (0) | 2023.03.08 |