반응형

1. 시험환경

    ˙ Github

    ˙ Ubuntu v20.04

    ˙ Docker, Docker Hub

    ˙ Spring Boot Project

 

2. 목적

    ˙ Github에서 Spring Boot Project를 다운로드(pull) 한다.

    ˙ Spring Boot Project가 정상적으로 빌드(build) 되어 결과 파일(war, jar)가 생성되는지 확인한다.

    ˙ Dockerfile을 이용하여 Spring Boot Project를 Docker Image로 빌드한다.

    ˙ Docker Image를 Docker Hub에 업로드(push) 한다.

    ˙ Docker Hub에서 다운로드(pull) 하고 컨테이너를 실행하여 동작여부를 확인한다.

 

3. 적용

    ① Spring Boot 프로젝트를 생성한다.

        - Git Clone 명령어 : git clone [repository] .

        - Repository :  https://github.com/silkWater/template-gradle-springboot.git

 

GitHub - silkWater/template-gradle-springboot

Contribute to silkWater/template-gradle-springboot development by creating an account on GitHub.

github.com

 

    ② 프로젝트 빌드(Gradle) 명령어 실행 후 BUILD SUCCESSFUL 및 결과 파일이 생성된 것을 확인한다.

        - Gradle 빌드 명령어 : $ gradle build --info

        - 빌드 파일 경로 : $ (pwd)/build/libs/[파일명].war

 

    ③ 프로젝트의 최상위 디렉토리에서 Dockerfile을 작성한다.

    ④ Dockerfile에 의하여 Spring Boot 프로젝트를 docker image로 빌드한다.

       - Gradle 빌드 명령어 : $ docker build -t [repository:tag] .

 

    ⑤ Docker Hub에 업로드(push) 권한을 얻는다.

        - $ docker login

 

    ⑥ DockerHub에 이미지를 업로드(push) 한다.

        - $ docker push [repository:tag]

 

    ⑦ Docker Hub의 지정한 Repository에 Docker Image가 업로드(push) 되었는지 확인한다.

        - Docker Hub Repository 전/후 비교

 

 

    ⑧ Local PC의 docker image를 삭제하고 Docker Hub로부터 이미지를 다운로드(pull) 받는다.

    ⑨ 도커(docker) 컨테이너(container)를 실행한다.

 

4. 결과

    ˙ HTTP 접속하여 서비스가 동작하는지 확인한다.

 

반응형
반응형

1. 시험환경

    ˙ 우분투(ubuntu) v20.04

    ˙ AWS AMI : 사용자 생성

    ˙ AWS ECR(Elastic Container Registry)

 

2. 목적

    ˙ AWS ECR(Elastic Container Registry) 저장소(repository)를 생성한다.

        - 참고: https://languagestory.tistory.com/211 ①~⑥

    ˙ AWS CLI 사용을 위한 사용자로 IAM user를 등록한다.

        - 참고: https://languagestory.tistory.com/211~⑩

    ˙ Docker Image를 생성한 ECR 저장소에 업로드(push) 한다.

    ˙ ECR 저장소에 등록된 이미지를 다운로드(pull) 받는다.

 

3. 적용

    ① 우분투(ubuntu) 리눅스 환경에서 AWS-CLI 패키지를 설치한다.

        - sudo apt install awscli

 

    ② 설치완료 후 동작 여부를 확인한다.

        - $ aws cli

 

    ③ AWS CLI 사용을 위해 IAM 사용자를 등록한다. (참고: https://languagestory.tistory.com/211)

        - Access Key, Secret Key, reging, type(json)을 차례대로 입력한다.

 

    ④ 등록한 AWS ECR에 권한(pull) 획득을 위해 AWS-ECR과 Docker 로그인한다.

        - $ aws  ecr  get-login-password  --region  [region]  |  docker  login  --username  AWS  --password-stdin  [ECR URL]

 

    ⑤ DockerHub에서 nginx 이미지를 다운로드(pull) 한다.

 

    ⑥ 다운받은 이미지를 AWS ECR Repository에 push하기 위해 tag명을 생성한다.

        - $ docker  tag   [기존 REPOSITORY:TAG]   [신규 REPOSITORY:TAG]

 

    ⑦ AWS ECR로 업로드(push) 한다.

        - $ docker  push  [업로드 이미지 REPOSITORY : tag]

 

4. 결과

    ˙ ECR Repository에 도커 이미지가 등록된 것을 확인한다.

 

    ˙ Local PC에서 Docker Image를 삭제(rmi)하고 AWS ECR에 등록된 이미지를 다운로드(pull) 받는다.

        - $ docker  pull  [repository/image:tag]

 

반응형
반응형

1. 시험환경

    ˙ 우분투(ubuntu) v20.04

    ˙ AWS IAM 사용자 생성

    ˙ AWS ECR(Elastic Container Registry)

 

2. 목적

    ˙ ECR 저장소(repository)를 생성한다.

    ˙ AWS CLI 사용을 위한 사용자로 IAM user를 등록한다.

    ˙ Docker Image를 생성한 ECR 저장소에 업로드(push) 한다.

    ˙ ECR 저장소에 등록된 이미지를 다운로드(pull) 받는다.

 

3. 적용

    ① AWS ECR(Elastic Container Registry) 서비스에서 "시작하기" 버튼을 클릭한다.

 

    ② private 저장소로 설정하고 레포지토리 이름을 등록한다.

        - 저장소(repository) 이름 : my-repo-nginx

 

    ③ 저장소(repository) 설정값은 비활성으로 한다. (과금 연관)

 

    ④ 등록한 이름으로 저장소(repository)가 생성되었다.

 

    ⑤ 저장소(repository)를 클릭하고 "푸시 명령 보기" 버튼을 클릭한다.

 

    ⑥ ECR Repository에 Push/Pull 하기 위한 명령어를 확인할 수 있다.


    ⑦ AWS CLI 접근권한을 갖기 위한 사용자를 생성한다.

 

    ⑧ 사용자 이름을 입력한다.

 

    ⑨ 생성할 사용자의 권한을 부여한다.

        - 여기에서는 빠른 테스트를 위해 관리자권한을 부여하였다.

 

    ⑩ 사용자를 생성한다.

 

4. 결과

    ˙ Docker 이미지를 저장하기 위한 ECR Repository를 생성하였다.

    ˙ AWS CLI 명령어를 통해 ECR Repository에 이미지 등록 권한을 갖는 IAM 사용자를 생성하였다.

    ˙ 다음 포스팅에서 ECR 저장소에 이미지를 pull/push 하기 위한 방법을 알아보자.

        - https://languagestory.tistory.com/212

 

 

 

반응형
반응형

1. 시험환경

    ˙ 우분투(ubuntu) 리눅스 v20.04

    ˙ docker

 

2. 목적

    ˙ 컨테이너(container)안에서 생성된 파일 및 데이터는 컨테이너 종료(rm)와 함께 삭제된다.

    ˙데이터 저장 전용 컨테이너(container)와 호스트(Host)를 이용하여 복합 저장소를 구성한다.

        - 여러 컨테이너(container)안에서 생성된 파일을 데이터 저장 전용 컨테이너(container)에 마운트한다.

        - 데이터 저장 전용 컨테이너(container)를 영구적인 저장소(volume)에 보관하기 위해 호스트에 마운트한다.

 

3. 적용

    ① -v 옵션과 함께 컨테이너(container)를 실행하면 Container의 저장소가 Host의 경로로 마운트 된다.

        - 마운트 target 경로 : Host의 $(pwd)/docker-nginx-html

        - 마운트 source  경로 : Container의 /usr/share/nginx/html

 

    --volumes-from  옵션과 함께 컨테이너(container)를 실행하면 지정경로를 다른 컨테이너(container, 데이터 저장 전용)에 마운트한다.

        - $ docker run -d --volumes-from [container(저장소)]  [image] 

 

    ③ nginx 컨테이너(conatiner) 안에 진입하여 파일을 생성한다.

        - "stupefied_joliot" 컨테이너(container) : test1.txt 파일 생성

        - "confident_heyrovsky" 컨테이너(container) :  test2.txt 파일 생성

 

    ④ 데이터 저장 전용 컨테이너(my-ubuntu)에 진입하여 다른 컨테이너(nginx)에서 생성한 파일이 저장되었는지 확인한다.

        - 마운트 경로 : /usr/share/nginx/html은 nginx 실행을 위해 미리 정의된 경로이다.

 

 

    ⑤ 생성된 모든 컨테이너를 삭제한다.

        - 모든 컨테이너 삭제 명령어 : $ docker rm $(docker ps -a -q)

 

4. 결과

    ˙ 컨테이너(conatiner)가 삭제되어도 Host 마운트 경로에 파일이 남아있는 것을 확인할 수 있다.

 

반응형
반응형

1. 시험환경

    ˙ AWS

    ˙ Route 53

 

2. 목적

    ˙ AWS Route 53 서비스에서 도메인(Domain)을 구매한다.

 

3. 적용

    ① 「Route 53등록된 도메인 도메인 등록 버튼을 클릭한다.

 

    ② 도메인 이름을 입력하고 구매한다.

 

    ③ 도메인 관리자의 개인정보를 입력한다.

 

4. 결과

    ˙ 최대 3일 정도의 시간이 소요된다는 문구가 나오지만 보통 1일 이내에 완료된다.

 

반응형
반응형

1. 시험환경

    ˙ AWS Route53

    ˙ 호스팅 업체에서 도메인 구매 (ex. 가비아, 카페24 등)

 

2. 목적

    ˙ 구매한 도메인을 Route 53 호스팅 등록하여 AWS에 사용하기 위한 설정 방법을 알아보자.

    ˙ 서브 도메인을 생성하고 EC2에 IP주소를 매핑(Record A) 하는 방법을 알아보자.

 

3. 적용

    ① AWS Route 53 서비스에서 "호스팅 영역" 메뉴 "호스팅 영역 생성" 버튼을 클릭한다. 

 

    ② 구매한 도메인 이름을 입력한다.

 

    ③ 등록한 도메인 이름에 Name Server 등이 연결된 것을 확인할 수 있다.

 

    ④ 서브 도메인을 추가하고, 서브도메인과 연결할 값을 입력한다.

        - 레코드 이름 : 서브 도메인 입력

        - 값 : 서브 도메인과 연결할 IP (ex. EC2 Public IP)

 

    ⑤ 서브 도메인이 추가된 것을 확인한다.

 

    ⑥ 도메인을 구매한 호스팅 업체의 관리자 모드에서 네임서버를 "③AWS 호스팅 네임서버"로 교체한다.

        - 아래 화면은 사용하는 도메인을 구매한 호스팅 업체마다 다른 모양으로 나타난다.

 

4. 결과

    ˙ 서브 도메인으로 접속하면 Web Service 화면을 확인할 수 있다.

        - 추가한 서브 도메인은 EC2에서 nginx 서비스를 기동하고 있다. (참고: https://languagestory.tistory.com/189)

 

반응형
반응형

1. 시험환경

    ˙ ubuntu v20.04

    ˙ docker

 

2. 목적

    ˙ 컨테이너(container)안에서 생성된 파일 및 데이터는 컨테이너 종료(rm)와 함께 삭제된다.

    ˙ 컨테이너(container)안에서 생성된 파일을 영구적인 저장소(volume)에 보관하기 위해 

    ˙ 호스트(Host) 경로에 저장하는 방법을 알아보자.

 

3. 적용

    ① 컨테이너(container) 안에서 생성된 파일을 호스트(Host) 경로에 저장하기 (-v 옵션)

        - $ docker run -d -v [$(pwd)/호스트 vol 경로] : [컨테이터의 vol 경로] [image]     ※ $(pwd) : host의 현재 경로

 

    ② 컨테이너(container) 상세 정보를 확인하여 Mount 정보를 확인한다.

        - $ docker inspect [container]

 

    ③ 컨테이너(container) 안에서 임의의 파일을 생성한다.

 

    ④ 컨테이너(container)를 종료(rm)한다.

 

4. 결과

    ˙ 마운트된 호스트(Host)에 파일이 남겨져 있는지 확인한다.

반응형
반응형

1. 시험환경

    ˙ ubuntu v20.04

    ˙ Docker

 

2. 목적

    ˙ 컨테이너(Container) 로그를 출력한다.

    ˙ 컨테이너(Container) 로그 설정하는 방법을 알아보자.

 

3. 적용

    ① 컨테이너(container)의 주요 로그(log) 명령어

        - 특정 컨테이너의 로그 출력 : $ docker logs [container]

        - 특정 컨테이너의 로그 출력(마지막 10줄) : $ docker logs --tail 10 [container]

        - 특정 컨테이너의 실시간 로그 출력 : $ docker logs -f [container]

        - 특정 컨테이너의 실시간 로그 출력 (타임 스탬프 표시) : $ docker logs -f -t [container]

 

    ② 컨테이너(container)의 로그 파일이 Host 운영체제에 저장되는 경로 (--log-driver=json-file 경우)

        - $ cat /var/lib/docker/containers/[CONTAINER]/[CONTAINER]-json.log

 

    ③ 컨테이너(container) 실행 시 로그 파일 용량 및 갯수 제한 설정

        - ex) 로그 파일 개당 10MB 용량 제한, 최대 로그 파일 갯수 10개 설정

        - $ docker run -d --log-driver=json-file --log-out max-size=10m --log-opt max-file 10 [image]

 

반응형

+ Recent posts