Search

#005 #GitClone/Entrypoint

Step3 [ entrypoint 파일사용]

ex02에 있는 걸 다 복사해서 ex03으로
이미지도 다 지우고 깔끔하게 세팅하자.

도커파일 세팅

일단 이렇게 세팅하고 시작한다.
deploy 폴더 삭제
이따가 Git Clone받을 주소
blog-last.git
busanuv

openjdk11은 git이 설치가 되어있을까??? 그래야지 git clone할 수 있음!

// 실행 docker run -dit openjdk:11-jdk-slim
JavaScript
복사
인터렉션 모드로 jdk에 git이 설치가 되어있는지 확인할려고 한다. 그래서 일단 jdk부터 실행하기 위해 다운받는다.
docker ps 로 container ID 확인
docker exec -it 46fc bash 로 열린 컨테이너에 bash로 열어본다.
git —version 을 실행해보았더니 없단다. jdk에는 git이 없으니까 설치해야된다.

git 설치하기

apt-get update로 메뉴판을 업데이트
apt-get install git 로 깃 설치
-y : 설치 중간에 물어보는 행위에 모두 yes처리 1>: 표준 출력(stdout)을 리다이렉션하는 연산자. 숫자 1은 표준 출력을 의미
dev/null :
모든 입력을 무시하고 아무런 출력도 생성하지 않는 특별한 파일. 출력 내용을 버리는 데 사용됩니다. 배포시에는 로그를 안띄우는 것이 좋다.

entrypoint.sh 작성

sh파일에는 그냥 리눅스 명령어를 넣어도 잘 이해한다. apt-get은 동기적으로 처리된다고 하셔서 괜찮은데 git clone은 동기적인지 비동기적인지 잘 모른다. 알아봐야 되는데, 그냥 확실하게 할려면 CPU를 재워도 된다.
sleep으로 1초 재울껀데, 만약 이게 비동기적으로 처리가 되어서 sleep없이 내려가면 cd blog-last에서 없는 폴더에 접근할려하니 터지겠지, 한번 알아보자.
빌드된 앱 내부에 gradlew에 실행권한을 준다.
이렇게 entrypoint.sh에서 리눅스 명령어로 다 작성하고, Dockerfile에서 이 파일만 걸어주면된다.
git 프로젝트에 들어가서 application-dev.yml을 확인해보면 8080포트를 받고 있는 것이 확인된다. 그래서 포트포워딩으로 8080을 받을 것이다.
백그라운드 실행하고 포트포워딩으로 bash에 접근하게 한다.

entrypoint.sh 전체 스크립트

docker 전체 스크립트

Docker 로그 보기

//세팅 순서 1. 빌드 2. 실행 : docker run -d -p 8080:8080 step3 3. 실행되었다가 꺼진 것들은 로그가 남는다. 4. 그럼 docker ps -a 하면 모든 로그가 남는다.
JavaScript
복사
이전 단계에서 docker ps해도 아무것도 나오지 않아서 로그을 확인해볼려 한다. docker ps -a 로 로그확인
앱에 들어가서 Logs를 확인 하는 방법으로도 가능하다.
docker logs 컨테이너ID 으로도 콘솔에서 확인 가능하다.
ENTRYPOINT에서 ‘’/bin/bash” 설정을 해야된다고 한다. 왜 그런지 확인해보니, Dockerfile에서 ‘ENTRYPOINT’ 지시문을 사용할 때 이를 명시하는 것은 일반적인 실행파일이 없을 때의 대안이라고 한다. 즉, 컨테이너가 시작될 때 ‘/bin/bash’ 셀을 실행하여 명령을 실행한다. 그래서 ‘/bin/bash’ 를 명시하지 않으면 Docker는 해당 명령이 존재하는지 확인하고, 그렇지 않으면 컨테이너가 시작되지 않는 다고 한다.

마지막 진짜로 굽기

//여기까지 순서 1. docker build -t step3 . // 빌드 2. docker run -d -p 8080:8080 step3 // 포트포워딩및 실행
JavaScript
복사
// 사진 내용 구성 2. docker ps // 컨테이너 ID확인 3. docker exec -it 컨테이너ID bash // 명령어로 컨테이너 bash 열기
JavaScript
복사
git clone이 잘 된 것을 확인할 수 있다.
jar파일이 생성이 되었는지 확인 완료
마지막 웹으로 접속까지 확인한다.