인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

seohyeonjin787님의 프로필 이미지
seohyeonjin787

작성한 질문수

비전공자도 이해할 수 있는 Docker 입문/실전

docker compose up 시 느려짐 + 프로젝트 실행 안되는 문제

작성

·

481

·

수정됨

0

안녕하세요. 항상 좋은 강의 감사합니다.

현재 이 강의와 CI/CD 입문/실전 강의를 동시에 수강중입니다. 현재 강의로 배포하는 방법을 익힌 후

CI/CD 에서 배운것처럼 무중단 배포로 넘어가려고 하는데 문제가 생겨 질문드립니다...

 

강사님의 설명대로 할 땐 제대로 스프링부트 파일이 실행이 되었는데

개인프로젝트에 진행하려 하니 문제가 생겨서 문의드립니다. 각각의 개인 프로젝트마다

환경도 다르고 설정도 달라서 조언주시기 힘드실 수도 있을 것 같습니다. 한 이틀을 꼬박 매달려도

안되서 답답한 마음에 질문드립니다... ㅜㅜ

 

먼저, 현재 주어진 상황입니다

1.윈도우환경에서 실습중이고, putty를 활용하여 프로젝트를 진행중에 있습니다.

2. 프로젝트는 스프링부트+mysql (스프링시큐리티도 적용)

  1. aws의 인바운드규칙에 8080포트는 열어뒀습니다.

 

그리고 제가 작성한 도커파일과 compose.yml입니다. 운영환경에서 실행시킬거라 ENTRYPOINT를 추가했습니다.

FROM openjdk:17-jdk

COPY build/libs/*SNAPSHOT.jar /app.jar

ENV SPRING_PROFILE="dev"

ENTRYPOINT ["java", "-Dspring.profiles.active=${SPRING_PROFILE}", "-jar", "/app.jar"]
services:
  my-server:
    build: .
    ports:
      - 8080:8080
    depends_on:
      my-db:
        condition: service_healthy
    environment:
      - SPRING_PROFILES_ACTIVE=dev

  my-db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: pwd1234
      MYSQL_DATABASE: mydb
    volumes:
      - ./mysql_data:/var/lib/mysql
    ports:
      - 3306:3306
    healthcheck:
      test: ["CMD", "mysqladmin", "ping"]
      interval: 5s
      retries: 10

이러고 docker compose up -d --build를 하면

이렇게 나옵니다. 처음엔 프로파일 설정하는 게 문제였는데 위와 같이 설정을 한 후로는 dev로 잘 인식하는 것 같은데 로그 찍히는게 이게 전부입니다. 시행착오 전엔 더 길게 찍히고 db접속되는내용도 나왔었는데 그 후론 이렇게 나오고 전부네요.

 

문제점은

  1. 일단 제 ec2의 퍼블릭ip:8080 으로 접속 시 접속이 안되는 점이 제일 큽니다.

     

  2. 제 빌드 파일이 그렇게 크지 않은 것 같습니다. 80mb정도 나오고, EC2는 용량을 30Gb로 설정을 해줬습니다. 그런데 너무너무 느려집니다. docker compose up -d --build 후에 너무너무 느려지고 명령어 하나 치기까지 너무 느려집니다. 모니터링 결과 cpu는 20~30 퍼센트 정도 사용으로 나옵니다. 그래서 인스턴스 재부팅도 여러번해봤지만 compose up만 하면 느려지네요,,

     

     

    그래서 이 EC2 인스턴스로 연습을 많이 한 것 같아서 필요없는것들 지웠지만 그래도 너무 느려집니다. 그래서 새로 aws 계정을 파서 EC2 인스턴스를 만들어서 실행해봐도 느려지는 문제는 똑같습니다. 스프링시큐리티를 적용했기 때문에 처음 실행할 때 토큰이 나오면 로그인하려 하는데 아예 접속이 안되니 어떡해야할지 모르겠네요 ㅠㅠ....

구글링과 gpt로 다 고쳐보고는 있는데 근본적인 문제가 어디일지 감이 안와서 혹시 예상되는 문제점이 있으실까 해서 여쭤봅니다 ㅠㅠ 감사합니다.

 

p.s. 새로 만든 EC2 인스턴스에선 cpu사용률이 99퍼 찍었네요 ㅠㅠ 일단 이것부터 해결하고 오겠습니다...

 

답변 2

1

해결 됐습니다... 생각보다 문제가 많았네요 ㅠ

저같은 분들이 계실까봐 제가 해결한 해결방법 공유드립니다

 

  1. 로그가 너무 많이 찍히는 문제

application.yml과 logInteceptor에서 설정한 로그가 너무 많았고 특히 처음 어플리케이션 시작할 때 쿼리를 포함한 로그가 너무 많이 찍혀서 docker compse up 실행 시 cpu가 굉장히 느려졌고, 그래서 로그를 최소한으로 줄여줬습니다.

 

  1. 그래도 문제는 해결되지 않았습니다... 너무 느려진 문제요

구글링하다보니 EC2의 메모리의 일정 부분을 CPU로 바꿔주는? 방법으로 CPU성능을 올려주는 방법이 있었습니다. swap이나 swapon으로 검색하면 관련 방법들이 많이 나오고, 메모리의 2GB를 CPU로 바꿔줍니다.

 

이렇게 하니 docker compose up 시 EC2의 ubuntu가 자꾸 죽는 문제는 해결할 수 있었습니다.

한 가지 의문은 compose.yml에 MYSQL_DATABASE: mydb 로 설정해줘도 정작 mydb라는 데이터베이스가 생성이 안 되는 문제가 생겨서 직접 mysql 컨테이너에 들어가서 mydb로 데이터베이스를 만들어줬더니 문제는 해결됐습니다. 이 부분은 좀더 공부해보겠습니다. 제가 강의중에 놓친 부분이 있을 것 같아서요!

 

그럼 긴글 읽어주셔서 감사합니다. ㅎㅎ

0

JSCODE 박재성님의 프로필 이미지
JSCODE 박재성
지식공유자

안녕하세요 seohyeonjin787님! 해결하셨다니 다행입니다😊😊

그리고 다른 분들을 위해 해결 방법 공유해주셔서 너무 감사드려요ㅎㅎ

 

마지막 부분에서 MYSQL_DATABASE: mydb로 설정해도

데이터베이스가 생성이 안 되는 원인에는 여러가지 이유가 있을 수 있습니다.

우선 제일 처음 볼륨이 이미 생성되어버려서 MYSQL_DATABASE가 적용이 안 되는 거일 수도 있으니,

볼륨으로 설정한 폴더를 삭제하시고 새로 컨테이너를 띄워보시기 바랍니다!

 

이 외로 궁금하신 점 있으시면 편하게 질문 또 남겨주세요~~

seohyeonjin787님의 프로필 이미지
seohyeonjin787

작성한 질문수

질문하기