ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • docker-compose로 mysql사용하기1
    docker 2023. 2. 12. 21:59

    프로젝트를 하다가 API를 서버를 EC2에 배포를 하려고 하는데

    정해진 시간에 서버를 돌리기가 무리였고, 24시간 돌리자니 30일밖에 이용하지 못한다는 단점이 있었다.   

    따라서 고려해 본것이 백엔드 작업자분들과, 프론트 작업자 분들이 동일한 환경에서 작업을 할 수 있도록 하는

    Docker...

     

    우선 백엔드 작업시, 모든 백엔드 분들이 docker로 MySQL을 동일하게 실행 가능하도록 하는 것이다.

     

     

    docker-compose란?

    시스템은 단일 어플리케이션으로 구동되지 않습니다.

    여러개의 어플리케이션이 서로 의존성으로 엮여 있다.

    하나의 컨테이너가 하나의 어플리케이션을 담당한다고 하면 여러개의 컨테이너가 필요하다.

    이때 필요한 것이 도커컴포즈이다.

    도커 컴포즈는 yaml로 작서오디어 여러개의 컨테이너실행을 한번에 관리해준다.

     

     

    docker-compose.yml

    version: '3'
    
    services:
      mysql:
        image: mysql:8
        environment:
          MYSQL_ROOT_PASSWORD: root
          MYSQL_USER: sa
          MYSQL_PASSWORD: sa
          MYSQL_DATABASE: testdb
        ports:
          - 3307:3307

     

     

    • version
      • Comose 파일 버전로 도커 엔진 버전별 사용가능한 버전이 존재
    • services
      • Docker Compose로 하나로 관리할 서비스들을 정의. 이들이 각각 컨테이너가 된다.
      • services 아래 설정되는 각 서비스의 이름으로 컨테이너간 통신할 수 있다.
    • mysql
      • “mysql”이라는 이름의 서비스
      • 백엔드에서 DB 설정을 한다면 hostname에 이 값을 사용할 수 있다.
      • image
        • mysql 기반 이미지 사용
      • environment
        • 해당 컨테이너에서 사용할 환경변수 설정
        • mysql 이미지는 컨테이너의 환경변수를 참조하여 MySQL DB, 유저 정보등을 구성함
      • volumns
        • 호스트의 파일시스템과 도커 컨테이너의 파일시스템을 마운트함
        • DB 데이터 유지를 위해 필수적으로 설정되야함
      • ports
        • 호스트의 포트와 컨테이너의 포트를 매핑함
      • restarts
        • 오류 등으로 컨테이너가 종료됐을때 재시작 여부

     

    application.yml

    spring:
      datasource:
        url: jdbc:mysql://${DB_HOST:db}:3306/testdb
        username: sa
        password: sa
    
      jpa:
        hibernate:
          ddl-auto: create
        show-sql: true
        properties:
          hibernate:
            dialect: org.hibernate.dialect.MySQL5Dialect

    예시이니 우선 ddl-auto로 create를 해놓았다.

     

     

    어...그런데 마운트 시킨 파일을 인식하지 못하는 오류가 발생하였다.

    regular file이 아니라는 오류가 발생을 하였는데, 해결하는데 2일을 쏟았다....

    결론은 경로 위치...

     

    docker-compose의 위치를 설정파일은 properties에 위치하였었다.

    따라서 볼륨이 마운트 되는 위치가 resource가 된다.

    즉, 빌드시 해당 볼륨을 읽기때문에 읽지 못하는 파일 에러가 나는 것이다.

     

    나란사람... 바보...★

     

    따라서 해당 컴포즈 파일을 루트 폴더로 옮겨서 실행하니 드디어... 오류 해결...

     

    그러나...

     

     

    신은 날 버렸어.

    다음 글에서 계속

    728x90

    'docker' 카테고리의 다른 글

    도커와 도커컴포즈로 빌드해보기  (0) 2023.02.18
    dockerFile과 docker-compose.yml 의 차이  (0) 2023.02.16
    dockerFile이란?  (0) 2023.02.14
    docker-compose로 mysql사용하기2  (0) 2023.02.12
    도커 볼륨이란?  (0) 2023.02.10

    댓글

Designed by Tistory.