Skip to content

Latest commit

 

History

History
401 lines (201 loc) · 11.6 KB

20210818 Docker Study.md

File metadata and controls

401 lines (201 loc) · 11.6 KB

2021.08.18 (Team3) Docker Study

환경 :: Ubuntu 18.04

참고사이트 :: (도커(Docker) 입문편 컨테이너 기초부터 서버 배포까지)

https://www.44bits.io/ko/post/easy-deploy-with-docker




강사 :: 김도커님 (실명 거론은 좀 그래서... 닉네임으로 ^^)


Front단 배포


윈도우 이클립스에서 war파일로 배포해서 Ubuntu 로컬에 넣기 전에

EC2에서 사용할 수 있게 EC2에 할당된 탄력적 IP 주소로 코드를 다 바꾸었다.


도커 톰캣 컨테이너 진입 ::

docker exec -it tomcat bash

image


image

war파일 docker 톰캣 컨테이너에 배포


톰캣 컨테이너에 배포만 하면 알아서 구동시켜준다

image


image

이렇게 셋팅한 도커 컨테이너를 Docker Hub에 내 계정 밑에 tracycle_front이란 이름으로 local태그를 붙여 커밋한다.

(로컬에서만 돌아가는 ip주소로 설정되어있기 때문에 local이라고 태그이름 붙임)

image

이미지가 생성되었다.


image

그리고, 컨테이너 삭제 해줬다.


그리고, 커밋했던 이미지 구동

image

컨테이너가 생성되어 잘 구동됐다는 결과나오고 페이지도 뜬다.

image

image


컨테이너 내부에 진입해보니

image

이렇게 파일이 잘 배포되어있음을 확인했다.

컨테이너도 생성되어 잘 돌아가고 있다.

image


도커 로그인

image

로그인 성공


이미지 push

image

id 저장소 밑에 repository에 local 태그로 넣는다고 해서.. 이렇게

내 계정 밑에 넣으려면 이렇게 해야만 한다


image

image

Docker Hub에 잘 Push 되었다.


EC2에서 사용할 이미지는 위와 같은 과정으로 똑같이 진행해서 PUSH까지 하면 된다.

테스트를 위한 웹 요청은 똑같이 localhost로 요청하면 된다.

image

오른쪽 파이어폭스 브라우저 화면과 같이 이렇게 잘 나오면 테스트 완료


image

Push가 잘 되었다면 이렇게 지정해서 Push했던 태그명으로 추가되었음이 확인된다.



Back단 배포

SpringBoot 서버


image

image

로컬에서 프로젝트 압축파일을 가져왔다.


image

back 폴더로 옮겨서 압축 풀어주었다.


sudo vi pom.xml 명령어 입력해서 vi 편집기로 pom.xml 열어서

image

war를 jar로 바꿔주었다.

image

잘 바뀐것을 확인했다.


이제 maven을 설치한다. (이미 설치되어있다면 필요 없는 부분)

image


image

maven 설치완료되었고 target 폴더 안에 파일들 확인했다.


pom.xml이 있는 폴더 안에서

image

sudo mvn package 명령을 쳐서 빌드를 진행한다.


image

빌드가 끝났고 target 폴더에 빌드 파일들이 배포된 것을 확인했다.


그리고 sudo vi Dockerfile 해서

image

오른쪽 표시한 터미널 창과 같이 Dockerfile을 작성하고 저장해준다.

image

저장 확인했다.

image

잘 작성된 것도 확인했다.

(From 부분 의미는 openjdk 8버전 기반으로 한다는 걸 설정해준것임)

(Copy는 recycle 뭐시기.jar 파일을 app.jar 라는 이름의 파일로 복사하겠다는 얘기)

(Entrypoint 는 .jar를 실행시켜주라는 의미)


image

위 명령어로 도커파일로 이미지를 빌드하도록 해준다.

local . 을 붙여줘야지 그 밑에 있는 것을 전부 빌드한다.


image

도커 이미지로 도커에 빌드를 완료했고, 확인되었다.

(openjdk 설치되있는 이유는 아까 Dockerfile에서 openjdk 기반으로 한다는 걸 설정해줬기 때문)

(Copy는 recycle 뭐시기.jar 파일을 app.jar 라는 이름의 파일로 복사하겠다는 얘기)

(Entrypoint 는 .jar를 실행시켜주라는 의미)


image

위와 같이 docker run 시킨다.


image

back 컨테이너가 잘 작동되고 있다.


image

log 확인 명령어로 서버가 잘 구동되었는지 확인했다.

(fea는 컨테이너ID 명 앞 3글자를 지정, 해당 컨테이너 로그를 보여주도록 명령함)


image

이제 Docker Hub에 Push해준다.


image

도커 내부에 진입해서 파일들 확인함


<EC2용 Spring Boot 서버 빌드해서 Docker Hub에 배포하기>

sudo vi application.properties 명령어로 vi 편집기 열고

image

ip를 EC2 ip주소로 바꿔준다.


그리고 cd config 해서 config 폴더로 이동하고

sudo vi dbconn.properties 명령어를 쳐서 vi편집기를 들어간다.

image

그리고 ip주소를 EC2 주소로 바꿔준다.


나머지는 로컬로 했던 과정과 동일한 방식으로 진행하면 된다.


image

Docker Hub에 Push까지 진행했고, 위와 같이 잘 Push되었음을 확인했다!



Flask 서버


김도커님의 Flask서버 Docker 이미지 다운

(시간과 AWS 프리티어 사양 관계로 이미지만 받아서 로컬에서 돌릴듯?)

image

다운 완료

image

image


ubuntu 로컬에 docker-compose.yml 파일을 넣어주었다.

image


sudo apt install docker-compose 명령어로 docker compose를 설치한다.

image


vi docker-compose.yml 명령어를 쳐서 vi 편집기로 들어간다.

image

docker-compose.yml 파일을 위와 같이 내가 지정한 Docker 이미지에 맞게 설정을 작성해준다.


그리고 docker-compose.yml 파일이 있는 곳에서

image

docker-compose up 명령어를 쳐서 compose를 해준다.

(오류때문에 AWS ec2로 이동해서 Front와 Springboot 이미지만 pull해서 위 과정 진행함)

(Flask 서버는 용량이 너무 커서 AWS EC2 프리티어로는 택도 없음...)

image


※ 여기서 참고사항

docker-compose stop 이나 restart 로 하면 컨테이너가 안내려간 채로 정지되거나 재시작한다.

(멈췄다가 다시 시작할 계획이 있을 때는 꼭 이 명령어를 쳐야한다)


아예 중단하면서 컨테이너도 함께 내릴 때는 docker-compose down 명령어를 사용한다.

내려져 있는 상태에서 로그 출력 없이 다시 실행할 때는 docker-compose up -d 명령어를 사용한다.


image

EC2 서버에 요청한 페이지가 DB데이터와 함께 잘 나오는 것을 확인했다.



++ 추가


모든 컨테이너 삭제하기

docker stop $(docker ps -a -q)

docker rm $(docker ps -a -q)


모든 이미지 삭제하기

docker rmi $(docker images -q)


Exit 상태의 모든 컨테이너 삭제하기

docker rm $(docker ps --filter 'status=exited' -a -q)


선택지우기

docker rmi 이미지id or 이름

docker image rm 이미지id or 이름