docker-compose 버전

DB 가 준비되어 있을 때

version: "3"
services:      
  <service-name>:
    image: "metabase/metabase:v0.46.4"
    container_name: "<container-name>"
    volumes:
      - ./metabase.db:/metabase.db  # H2 제외 한 application DB는 metabase.db 라는 파일에 저장됨. h2 는 metabase.db.mv.db
    environment:
      - JAVA_OPTS=-Xmx1024m
      - MB_DB_FILE=metabase.db
      - MB_DB_CONNECTION_URI=mysql://<dbUrl>:<port>/<dbName>?user=<user>&password=<password>&allowPublicKeyRetrieval=true
    networks:
      - "frontend"
      - "backend"
    ports: 
      - "9000:3000"
    restart: "on-failure"

networks:
  frontend:
  backend:

DB가 없을 때

version: "3"

services:
  db:
    image: mysql:8
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=<root password>
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    ports:
     - 8080:3306
    networks:
      - "frontend"
      
  metabase-test:
    image: "metabase/metabase:v0.46.4"
    container_name: "metabase-test1"
    volumes:
      - ./metabase.db:/metabase.db
    environment:
      - JAVA_OPTS=-Xmx1024m
      - MB_DB_FILE=metabase.db
      - MB_DB_CONNECTION_URI=mysql://db:3306/metabase?user=<user-name>&password=<password>&allowPublicKeyRetrieval=true
    depends_on:
      - db
    links:
      - db
    networks:
      - "frontend"
      - "backend"
    ports: 
      - "9000:3000"
    restart: "on-failure"

networks:
  frontend:
  backend:

application db 를 default 설정인 h2 로 하게 되면 설정한게 별로 없을 경우에는 빠르지만 파일 기반 이기 때문에 설정이나 dashboard 등 데이터가 많아지면 많아질 수록 느려지게 된다. 성능저하의 원인

파일을 풀 스캔 하기 때문에 CPU 사용량이 튀게 된다.


docker-compose 도 container 버전과 동일하게 Oracle jar 파일을 설치 후 옮겨주면 된다.

Last updated

Was this helpful?