ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Docker 로 SpringBoot 프로젝트 배포하기 - EC2에 Docker 올리고 배포
    Docker 2023. 10. 30. 22:14

    이전 글에서 스프링부트 프로젝트를 jar 파일 빌드, 윈도우에서 Docker 환경 설정, Docker 이미지 생성 및 Push를 했다.

     

    윈도우에서 Docker 환경 설정하기

    1. WSL2 활성화 하기 WSL2 는 윈도우에서 리눅스 실행파일을 네이티브로 실행할 수 있게 해준다. Docker Desktop for Windows는 WSL2를 기반으로 만들어졌다. 따라서 WSL2를 미리 활성화 해준다. 우선 명령프

    joelinseoul.tistory.com

     

    이번에는 EC2에서 Docker 를 설치하고 배포한다.

    EC2 인스턴스의 OS 는 우분투 를 사용했다.

     

    EC2에 Docker 설치하기

    1. 우선 패키지 목록을 최신 상태로 업데이트 한다.

     sudo apt update


    2. 아래 명령어로 https 패키지를 다운받을 수 있도록 한다.

    sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common


    3. Docker 의 공식 GPG키를 추가한다.

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/docker-archive-keyring.gpg > /dev/null


    4. Docker repository를 추가한다.

    echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null


    5. apt 업데이트

    sudo apt update


    6. docker-ce 설치

    apt-cache policy docker-ce
    sudo apt install docker-ce

     

    7. docker 설치 완료 후 서비스 상태 확인

    sudo systemctl status docker
    Active 가 나오면 Docker 가 성공적으로 동작하는 것이다.

     

    Docker Hub 에서 Pull 받기

     

    이전 글에서 push 한 Docker 이미지를 pull 받아보자

    아래 형태로 명령어를 입력하면 해당 이미지를 내려받게 된다.
    sudo docker pull <도커id>/<이미지명>:<태그>​
    성공적으로 pull 된 이미지

     

    이미지 실행하기

    아래의 형태로 run 하면 이미지가 실행된다.
    - -d 는 백그라운드에서 애플리케이션을 동작시고자 할 때 입력한다.
    - -p 80:8080 는 포트포워딩 옵션이다. 80포트로 들어온 요청을 8080포트로 포워딩 시키는 설정.
    - 나는 웹 브라우저로 들어온 요청을 springboot 내장 tomcat 으로 넘겨주고자, -p 80:8080 으로 설정했다.
    sudo docker run -d -p 8080:8080 <도커id>/<이미지명>:<태그>​

    docker 에서 스프링부트가 실행됬다.

    이렇게 Docker 를 통한 스프링부트 애플리케이션의 배포가 완료됬다.

     

     

    기타 docker 명령어

     

    현재 실행중인 컨테이너 목록 확인하기
    sudo docker ps​

     CONTAINER ID: 컨테이너의 고유 ID
     IMAGE: 컨테이너를 생성할 때 사용한 이미지
     COMMAND: 컨테이너가 실행하는 명령어
     CREATED: 컨테이너가 생성된 시간
     STATUS: 컨테이너의 상태
     PORTS: 컨테이너가 열어놓은 포트
     NAMES: 컨테이너의 이름

    1개의 컨테이너가 실행중인 상태


    컨테이너 정지하기
    sudo docker stop <컨테이너id>​

    현재 실행 중인 컨테이너를 정지하는데 사용됨.
    정지되면 정지된 컨테이너의 id를 응답함.

    컨테이너 정지하기



    컨테이너 시작하기
    sudo docker start <컨테이너id>​
    컨테이너 시작하기


    컨테이너 삭제하기

    sudo docker rm <컨테이너id>


    컨테이너 로그 보기

    sudo docker logs <컨테이너id>​

    로그를 확인할 수 있는 유용한 명령어다.
    여기에는 아래의 옵션을 추가하여, 내가 필요한 로그를 확인할 수 있다.
     --details: 로그 메시지의 상세 정보를 보여줌.
     --follow 또는 -f: 로그를 실시간으로 계속해서 보여줌.
     --since <timestamp>: 지정된 시간부터의 로그를 보여줌. <timestamp>는 "10m" (최근 10분), "1h" (최근 1시간), "2013-01-02T13:23:37" (지정된 시간)과 같은 형식을 사용할 수 있음.
    --tail <number>: 로그의 마지막 <number>개의 라인만 보여줌.
    --timestamps 또는 -t: 각 로그 메시지에 타임스탬프를 추가함.
    --until <timestamp>: 지정된 시간까지의 로그를 보여줌. <timestamp>의 형식은 --since 옵션과 같음.

    --follow --tail 옵션으로 로그보기
모든 일에 선한 진심으로 접근하기