우분투에 가장 먼저 젠킨스를 설치해야한다.
그래서 젠킨스 설치과정에 대한 정보를 얻은 곳을 공유한다.
https://gksdudrb922.tistory.com/195
[Ubuntu] Jenkins 설치
Jenkins Jenkins는 Java로 빌드 된 오픈 소스 CI (Continuous Integration) 및 CD (Continuous Delivery) 도구이며, Jenkins는 기본적으로 소프트웨어 프로젝트를 빌드, 테스트 및 배포하기 위해서 사용한다. 또한 DevOps
gksdudrb922.tistory.com
해당 블로그를 통해 따라서 진행해보았다.
우분투에 젠킨스를 먼저 설치하는게 아니라
도커를 설치하고 그 위에 젠킨스 이미지를 올리고 또 그위에 도커를 올려야 하는 것 같다.
도커를 설치하는 이유는 다음과 같다.
위 처럼 도커를 이용하면 장점이 ec2 우분투 서버에 깃 풀을 받아서 코드가 존재 하지 않아도 된다.
로컬에서 도커로 이미지 만들어서 도커 허브에 넣기만 하고
우분투에서는 해당 이미지 받아서 실행만 하면되기에...
그래서 도커 먼저 설치했다.
따라한 사이트는 아래와 같다.
https://velog.io/@osk3856/Docker-Ubuntu-22.04-Docker-Installation
[Docker] Ubuntu 22.04 Docker 설치
Ubuntu 22.04 에 Docker 설치하기
velog.io
그럼 계속 공부하면서 작성 해보겠다.
위 방법으로 도커 설치 이후 도커로 프로젝트를 배포해보겠다.
도커로 프로젝트를 배포 하기 위해 로컬 환경에서 인텔리제이를 키고
명령어를 입력하여 build 폴더 내의 libs폴더에 jar파일을 생성해준다.
이렇게 권한을 주고
해당 컴퓨터의 비밀번호를 입력한다. 나의 경우는 0818이다.
그 뒤 권한 변경 후 build명령어로 jar 파일을 생성해준다.
이후 프로젝트에 해당 파일을 만들어준다.
도커 파일을 만들어주자!!!
도커 파일을 만들어 준 후 컴퓨터에 도커를 설치하고 회원가입을 해준다.
회원가입 후 이제 다시 인텔리제이 또는 터미널에 가서 dockerfile 만든 경로에서 아래 명령어를 입력해준다.
docker build --platform amd64 --build-arg DEPENDENCY=build/dependency --tag yunhy96/dday:1.0.1 .
이렇게 입력하는데 amd64는 내가 맥이라 추가한 부분이고 yunhy96은 도커 계정이다. 그리고 dday:1.0.1은 내가 만들고 싶은 이름이랑 버전이고 마지막 . 은 지금 해당 경로에 있는 dockerfile을 기준으로 작업하겠다는 의미이다.
맥북 기준 위 명령어로 도커파일을 생성하려고 했더니 문제가 발생했다.
오류 내용은 다음과 같았다.
ERROR: failed to solve: openjdk:17-alpine: no match for platform in manifest sha256:4b6abae565492dbe9e7a894137c966a7485154238902f2f25e9dbd9784383d81: not found
해당 오류를 해결한 결과 도커 파일도 위에서 17-alpine버전으로 바꾸어 주었고
위 명령어도 이렇게 바꾸었다.
docker build --platform linux/amd64 --build-arg DEPENDENCY=build/dependency --tag yunhy96/dday:1.0.1 .
맥 같은 경우는 리눅스 기반이라 앞에 linux를 꼭 붙여주도록 한다.
도커 파일은 이렇게 버전뒤에 붙여주었다.
위 명령어는 윈도우 기준으로 이렇게 바꾸면 된다.
docker build --tag <도커계정명>/dday:1.0.1 .
위 명령어를 실행 한 뒤 도커 데스크탑 앱을 열어서 확인해보니
이렇게 잘 생성이 된 것을 확인 할 수 있었다.
터미널에서도
docker images 라는 명령어를 입력해본다.
이렇게 도커 이미지가 잘 생성됨을 볼 수 있다.
이제 해당 이미지를 도커 허브에 올리고
이 이미지를 우분투에서 내려받고 실행하면 된다.
SpringBoot 프로젝트 docker로 배포하기
우분투 서버에 스프링부트 프로젝트 도커로 배포해보기.
velog.io
해당 사이트를 참고하면서 차근차근 따라해 보겠다.
docker push 후 이름을 적었는데 작동을 실패했다.....
다시 확인해보니 이때 "풀네임"을 적어야 한다고 한다.
그래서
docker push yunhy96/dday:1.0.1
이렇게 적었다.
이렇게 나오면서 성공한 것 같다.
이제 ssh 접속을 해준다.
ssh 접속을 해주는 이유는 이제 우분투 서버 즉 아마존 서버로 들어가서 이 도커 이미지를 내려받은뒤(pull) 서버에서 실행 시키기 위해서이다. 서버에서 jar파일을 실행시키는것과 동일한 작업이라고 생각 하면 된다.
문제가 생겼다.
ec2에서 도커 로그인을 하려고 하니 실패한다.
그런데 다시 생각해보니 처음 도커 이미지를 말때 맥 기반으로 말았던게 생각난다..... 나는 우분투에서 배포할건데 맥환경기반에서 실행되게 말았으니까...당연히 안될거 같기도 하다.
일단 비밀번호가 자꾸 틀려서 아에 도커 홈페이지로 들어간 다음 내 정보에서 비밀번호를 리셋시켜버렸다.
이후 로그인을 하니 우분투 환경에서 로그인 성공했다...
이제 로그인을 했으니 도커 pull로 이미지를 가져와야한다. push 할때도 뒤에 풀네임을 적은 것 처럼 pull할때도 뒤에 풀네임을 적는다.
docker pull yunhy96/dday:1.0.1
또 그냥은 안된다 관리자 권한이 필요하니 앞에 sudo를 꼭 붙여주자. 우리가 ubuntu유저라 어쩔 수 없다. 루트가 아니기에...
현재 도커 이미지에 뭐가 들어있는지 sudo docker images로 확인 결과
우리의 dday프로젝트가 잘 들어온 것을 확인 할 수 있다. 그런데 사이즈가 상당히 크다...?
sudo docker run -p 8080:8080 (도커 허브 ID)/(Repository 이름)
해당 코드를 사용하면
sudo docker run -p 8080:8080 yunhy96/dday:1.0.1
가 된다.
실행은 되었다고 한다.
이제 포스트맨으로 실제 동작하는지 확인해보자
데이터 리스폰스도 정상적으로 왔고
로그도 잘 실행된다.
그런데...이거 어떻게...서버 내리지?
'프로젝트 > 서버관리' 카테고리의 다른 글
ubuntu에 도커와 젠킨스로 ci cd 구축하기(3편) + ec2서버 스왑메모리 추가 + ec2 서버가 자꾸 죽을 때 해결 방법 (0) | 2024.01.14 |
---|---|
ubuntu에 도커와 젠킨스로 ci cd 구축하기(2편) (0) | 2024.01.08 |
ec2-ubuntu에 도커 잘못 설치했을때 초기화하는 방법 (0) | 2023.12.28 |
우분투로 배포 하는 방법 쭉 정리. 이대로만 따라하기. (0) | 2023.12.26 |
프로젝트 초기에 401 unauthorize 오류 뜰 때 (0) | 2023.12.23 |