m1맥 사용, gradle 기준
준비할 것 : 스프링 프로젝트, ec2 생성하고 프로젝트와 연결 -> 추후에 글쓰도록 하겠음
나중에 다시 볼 수 있도록 최대한 자세히 써보겠음
1. Dockerfile 생성
경로 참고
FROM amazoncorretto:17.0.7-alpine
COPY build/libs/*.jar shoppingmall.jar
ENV TZ Asia/Seoul
ENTRYPOINT ["java", "-jar","-Dspring.profiles.active=prod", "shoppingmall.jar"]
위의 내용을 Dockerfile에 넣어주도록 하자
jar파일 경로가 틀리면 에러 난다. 경로 잘 체크해서 넣어주도록 하자
스프링 3.x.x 버전은 자바 17버전
2. build.gradle 수정
bootJar {
jar.enabled = true
}
jar {
manifest {
attributes 'Main-Class': 'com.testing.test.TestingApplication'
}
enabled = false
}
다음과 같은 내용을 추가해준다
3. jar 파일 빌드
./gradlew clean build -x test
3~5번 과정은 intelij ide console에서 입력
4. 도커 로그인 후 이미지 생성
이때 도커 계정이 필요하므로 없을시 회원가입
도커 허브를 켜놓은 상태라면 비밀번호 없이도 로그인 가능
docker login
// 성공시 Login Succeeded가 뜰것임
로그인이 안되는 경우 (깃허브로 도커 회원가입)
도커 허브 > account setting > security > access token 발급 받기
$ docker login -u [사용자이름]
입력 후 password에 발급받은 토큰 넣어주면 로그인된다
로그인 후에 도커 이미지를 빌드해준다
docker build -t [유저이름]/[이미지명] --platform linux/amd64 .
m1 맥은 --platform 부분도 넣어줘야함
마지막에 .도 생략하면안된다
도커 데스크탑에서 images에 들어가면 생성된것 확인가능
docker images
명령어로도 확인 가능하다
5. 도커 이미지 push
docker push [사용자명]/[이미지명]
6. 터미널에서 ec2 인스턴스 접속 및 우분투 도커 설치
ssh -i [pem 키] ubuntu@[ip]
우분투에 도커 설치는
https://velog.io/@jbro321/Docker-Ubuntu-22.04.3에-docker-설치
해당 블로그 참고함
도커 잘 설치되었는지 확인하려면 docker -v 명령어 입력해보자
7. docker image pull & run
sudo docker pull [사용자명]/[이미지명]
sudo docker run -d -p 8080:8080 [사용자명]/[이미지명]
8. 사이트 접속해보기
접속할때는 public ip 주소:8080으로 접속해주면된다
+) 참고사항들
Bind for 0.0.0.0:8080 failed: port is already allocated.에러 해결법
$ sudo lsof -i tcp:8080
위에서 실행중인 프로그램 pid로 종료시키기
$ sudo kill -9 [pid]
https://seulcode.tistory.com/557
위 블로그 참조하여 권한부여를 해줘야 재접속했을때도 제대로 작동한다
docker ps -a
를 통해서 콘테이너 목록들 확인한 후 안쓰는 컨테이너들 정리해주기
docker stop [id 또는 이름] docker rm [id 또는 이름]
컨테이너 실행 중지하고 지워주면됨
접속안될때 재접속 방법
똑같이 ec2 인스턴스 접속 후docker ps -a
위 명령어로 container id 혹은 콘테이너 이름을 확인한 후.
sudo docker start [cotainer id 또는 이름]
위 명령어를 통해 재접속