시작하면서 …

이 글은 Apps 101 과정의 여덟 번째 글입니다.

이 글에서는 작업한 소스를 Tomcat 이미지로 만들어서 배포 해보도록 하겠습니다.

빌드 만들기

빌드‘  메뉴 버튼을 클릭 하여 빌드 화면으로 이동 합니다.

빌드 메뉴

[그림. 메뉴 목록]

우측 상단에 ‘빌드 생성‘ 버튼을 클릭 하여 필드 생성 화면으로 이동 합니다.

빌드 화면

[그림. 빌드 화면]

빌드 기본 정보를 입력 합니다.

  • 이름 : tomcat-build
  • 설명 : tomcat 이미지 빌드
  • 레지스트리 명 : test-work-regi
  • 이미지명 : tomcat-build
  • 버전 : 1.0

빌드 기본 정보

[그림. 빌드 기본 정보]

다음으로 빌드 작업을 추가를 하겠습니다.

빌드 작업은 소스 파일을 다운 받아 내용을 일부 수정 하고 tomcat docker 이미지 파일을 만드는 순서로 진행 하겠습니다.

이번 글에서는 샘플 소스를  ‘REST 호출 작업‘으로 다운 받고, ‘스크립트 호출 작업‘으로 다운 받은 소스에 application.properties 파일을 mysql 접속 url를 수정 하는 두개의 작업이 있습니다. Git에 개발 된 소스를 사용하여 빌드를 하고 싶다면 ‘Spring Framework 기반의 Maven 프로젝트 빌드 후 Docker 이미지 만들기포스트의 ‘코드 리파지토리 작업‘ 부분을 참조 빌드 작업을 추가 하시면 됩니다.

샘플 소스는 MySql를 사용하는 소스로 ‘MySQL 배포하기 / 볼륨, 시크릿‘ 포스트를 먼저 진행 하여 mysql 워크로드를 생성 하셔야 합니다.

  1.  빌드 작업 패널 우측에 ‘추가’ 버튼을 클릭 하여 ‘REST 호출 작업’을  선택 합니다.
    • 빌드 작업 패널 박스

      [그림. 빌드 작업 패널 박스]

    • 빌드 작업 추가 팝업

      [그림. 빌드 작업 추가 팝업]

  2. REST 호출 작업에 내용을 입력하고 생성합니다. URL을 요청 하여 응답을 sample.zip으로 저장 합니다.
    • 작업 명 : download source
    • URL : http://websystique.com/?smd_process_download=1&download_id=2735
    • 응답을 저장 빌드 호스트 경로 : sample.zip
    • REST 호출 작업 팝업

      [그림. REST 호출 작업 팝업]

  3. 빌드 작업 패널 우측에 ‘추가’ 버튼을 클릭 하여 ‘스크립트 작업’을  선택 합니다.
  4. 스크립트 작업 내용을 입력하고 생성합니다.  mysql 접속 url의 호스트를 localhost에서 mysql로 수정 하는 내용입니다.
    • 작업 명 : edit source
    • Copy to Clipboard
    • 스크립트 작업 팝업

      [그림. 스크립트 작업 팝업]

  5. 빌드 작업 패널 우측에 ‘추가’ 버튼을 클릭 하여 ‘이미지 빌드 작업’을  선택 합니다.
  6. 이미지 빌드 작업 내용을 입력하고 생성합니다. 다운 받아 수정한 샘플 소스를 maven 빌드를 하여 war 파일을 생성하고 tomcat 이미지에 war 파일을 추가하여 이미지를 빌드 하겠습니다.
    • Copy to Clipboard
    • 이미지 빌드 작업 팝업

      [그림. 이미지 빌드 작업 팝업]

  7. ‘생성/실행’ 버튼을 클릭 하여 이미지를 생성 합니다.
    • 신규 빌드 생성 화면

      [그림. 신규 빌드 생성 화면]

  8. 빌드가 생성되고 실행이 되면 빌드 실행 팝업이 노출 됩니다. 설명은 비필수 값으로 값 입력 없이 ‘승인‘ 버튼을 클릭 하여 빌드를 실행 합니다.
    • 빌드 실행 팝업

      [그림. 빌드 실행 팝업]

  9. 빌드 실행 로그 팝업에서 로그를 확인 합니다. 정상 적으로 끝나면  ‘CREATE IMAGE STEP DONE’가 로그 마지막에 출력 됩니다.
    • 빌드 로그 팝업

      [그림. 빌드 로그 팝업]

  10. 빌드가 완료 되면 빌드 상세에 빌드 상태가 ‘DONE‘로 변경됩니다. 빌드 이미지명은 빌드 목록에서  확인 가능 합니다.
    • 빌드 상세 화면

      [그림. 빌드 상세 화면]

    • 빌드 관리 화면

      [그림. 빌드 관리 화면]

 tomcat-workload를 생성한 이미지로 배포 하기

지금까지 진행 하여 생성한 이미지를 기존에 tomcat-workload에 배포 하도록 하겠습니다.

tomcat-workload를 만들때 ‘이미지 형식‘을 ‘직접 입력’으로 생성 하였는데 ‘이미지 형식‘을 변경 하기 위해서 서비스 워크로드에서 tomcat-workload를 중지를 합니다.

워크로드 액션 메뉴

[그림. 워크로드 액션 메뉴]

워크로드 중지 상태

[그림. 워크로드 중지 상태]

tomcat-workload를 클릭 하여 워크로드 수정 화면으로 이동 합니다.

컨테이너 패널에 컨테이너명 ‘tomcat‘을 클릭 하여 컨테이너 수정 팝업을 뛰웁니다.

워크로드 컨테이너 패널 박스

[그림. 워크로드 컨테이너 패널 박스]

이미지 형식을 ‘빌드에서 선택‘을 클릭하고 빌드, 이미지, 태그를 선택 하고 ‘적용‘ 버튼을 클릭 합니다.

  • 이미지 형식 : 빌드에서 선택
  • 빌드 : tomcat-build
  • 이미지 : test-work-regi/tomcat-build
  • 태그 : 1.0.B000001
  • 컨테이너 팝업

    [그림. 컨테이너 팝업]

수정이 완료 되었으면 ‘시작‘ 버튼을 클릭 합니다.

워크로드 수정 화면

[그림. 워크로드 수정 화면]

tomcat-workload를 중지 하고 시작을 하면 Cluster IP가 변경 되어 nginx-workload에서 포트 포워딩이 되지 않아 nginx-workload를 재시작 해줍니다.

워크로드 액션 메뉴

[그림. 워크로드 액션 메뉴]

nginx-workload가 재시작 되면 nginx node port로 접속 하여 SpringMVCJPA2HibernateManyToManyCRUDExample url 로 접속 합니다.

샘플 소스 메인 페이지

[그림. 샘플 소스 메인 페이지]

해당 생성, 조회, 수정, 삭제를 진행 후 mysql 워크로드 터미널로 접속 해서 데이터 확인 하면 됩니다. MySQL 배포하기 / 볼륨, 시크릿‘ 포스트의 ‘Mysql 배포 확인’ 부분을 참조 하시면 됩니다.

Tomcat에서 MySQL 접속

빌드한 이미지는 mysql 접속 정보를 가지고 있습니다.

빌드 작업 중에 스크립트 작업에서 mysql 접속 정보 properties를 수정 하였습니다.

수정 된 application.properties 파일 내용 입니다.

Copy to Clipboard

url을 보면 ‘mysql:3306′ 로 되어 있는데 이 내용은 MySQL 배포하기 / 볼륨, 시크릿‘ 포스트에서 생성한 워크로드의 서비스이며 동일 서비스 맵(네임스페이스)에 배포 되어 있어 별다른 설정 없이 바로 접속 된 것입니다.

Tomcat과 Nginx 볼륨 같이 사용하기

먼저 Nginx 에 볼륨(스토리지) 연결하기 포스트를 먼저 진행 하여야 진행이 가능 합니다.

tomcat-workload와 nginx-workload가 연동이 되었으면 nginx-workload의 node port로 접속하면  Nginx 에 볼륨(스토리지) 연결하기 포스트에서 ‘Helloworld’ 홈페이지가 노출 되지 않게 되었습니다.

tomcat-workload에서 볼륨을 마운트 하여 ‘Helloworld’ 홈페이지가 노출 되도록 하겠습니다.

tomcat-workload의 워크로드 화면이로 이동 하여 볼륨 마운트 패벌 박스에 추가 버튼을 클릭 합니다.

볼륨 마운트 패널 박스

[그림. 볼륨 마운트 패널 박스]

‘file-brower’ 볼륨을 선택 하고 컨테이너 경로를 ‘/usr/local/tomcat/webapps/ROOT’ 입력 하고 적용 합니다.

볼륨 마운트 팝업

[그림. 볼륨 마운트 팝업]

볼륨 마운트 패널 박스

[그림. 볼륨 마운트 패널 박스]

워크로드 업데이트를 하고 nginx-workload의 node port로 접속 하면 Nginx 에 볼륨(스토리지) 연결하기 포스트에서 작성한 ‘Helloworld’ 홈페이지가 노출 됩니다.