프로젝트 순서(+도커)

0

MSA

목록 보기
9/10

프로젝트 순서
1) spring boot app 작성
2) 테스트
3) maven 프로젝트 build -> 압축파일인 .jar파일 만들어짐
4) dockerfile 생성
5) docker 이미지 생성
6) 이미지에 해당하는 도커에서 실행될 컨테이너 프로세스 생성
7) docker 컨테이너 프로세스 시작

5,6,7 이 잘되기 위해서는 Dockerfile(도커 설정파일)이 필요하다. -> 프로젝트 경로에 넣어두기


이미지 만들기

# openjdk 이미지가 컨테이너에 설치 이미지이름:태그
FROM openjdk:8
# 원본 파일 이름 (pom.xml에 설정돼있는), 압축파일을 target의 경로에서 찾음
ARG JAR_FILE=out/artifacts/Catalogs_jar/Catalogs.jar
# 원본파일 이름이 기니까 catalog.jar라는 이름으로 도커에 갖다 놓겠다.
COPY ${JAR_FILE} catalog.jar
# ENTRYPOINT 도커 파일의 명령어로 실행될 문장을 적어줌, [] 배열
ENTRYPOINT ["java","-Xms1024m","-Xmx1024m","-jar","/catalog.jar"]
  • 이미지 빌드 : docker build -t catalog:one .
  • 이미지들 확인 : docker images

네트워크 그룹 생성

: docker network create testnetwork

컨테이너 생성

docker run -d --name catalog1 --network testnetwork -p 9001:8081 catalog:one

  • run : 도커 프로세스를 생성 및 시작

  • -d : daemon , backgrond로 처리하라. 컨테이너를 만들고 시작하는데 시간이 걸리니까 로그메시지들이 나오는걸 백그라운드로 처리해라

    • 옵션 안주면 로그를 다 봐야됨
  • --name : 컨테이너 이름 지정

  • --network : 어떤 네트워크 그룹에 참여시킬지 결정

  • -p : 포트포워딩 내부에서는 9001:8081 -> 8081을 쓰지만 외부에서 포트바인딩(접근)을 할때는 9001번을 사용하라~ 9001에 대한 실제 포트번호는 8081인것임

  • catalog:one : 이미지 이름을 부여, 이미지에 해당하는 프로세스를 만듦

  • 이미지 한개로 컨테이너를 여러개 만들 수 있다.

    • msa에서 서비스메쉬를 강화시켜야하는데(히스트릭스를 이용해서 지연, 회로차단 등 로드밸런싱도 해야되고)
      로드밸런싱으로 다수의 사용자가 접속했을 때 같은 이미지에 해당하는 여러 서비스를 등록해놓을 수 있음 -> ribbon으로 로드밸런싱을 할수도 있음 -> 그래서 이미지 하나로 여러개 컨테이너 만드는 것
    • 평상시에는 컨테이너 서비스 1개만 구동하다가 명절때나 사람몰릴것 같을 때 똑같은 이미지에 해당하는 컨테이너를 여러개 만들어서 관리 할 수 있다.
  • docker ps : ps = process, 컨테이너 프로세스

  • docker rmi 이미지명 : 이미지 삭제

  • docker network ls : ls = list 네트워크 목록 확인

  • docker network inspect 네트워크명 : 네트워크 내용 살펴보기

  • name이 bridge인 브릿지네트워크를 쓰면 내부에서 통신이 안돼서 사용자 정의 네트워크를 넣어 준 것

  • 9002번으로 요청해야 도커 내부에서 8082로 관리되는 customer1에 접근 가능하다. 9002:8082
    요청 : http://컨테이너이름:9001/catalogs/customerinfo/id1
profile
백엔드를 공부하고 있습니다.

0개의 댓글