Metabase와 Nginx를 로컬에서 실행하고 연동하기

문서 목적


이 문서는 Metabase와 Nginx를 로컬에서 설치하고 실행하는 방법에 대해 정리하기 위해 작성했다.

Nginx는 Nginx의 기능 중 ssl을 이용한 HTTPS 연결이 가능하도록 하는 기능을 설정하기 위해 사용했다.

선결 지식 및 조건


  • Metabase에 대한 기본적인 이해

  • Docker 환경 설치

  • Docker Container 실행 방법 및 기본 지식

  • Nginx 기본 설정 및 ssl 설정

  • ssl 설정을 위한 Pem파일

Metabase 설치 및 실행 


Metabase를 Docker를 이용해 Container로 실행한다. 다음과 같은 명령어를 입력한다. 로컬 호스트의 디렉토리 경로를 테스트를 진행하는 호스트에 따라 적절하게 수정해준다. 아래의 명령어는 버전 0.29.3으로 설치하는 명령어이다. 다른 버전을 원한다면 마지막의 metabase/metabase:v0.29.3을 metabase/metabase로 수정하면 된다.

$ docker run -d -p 3000:3000 --name metabase -v $(pwd)/metabase.db:/metabase.db metabase/metabase:v0.29.3

Metabase Docker Container가 정상적으로 실행되었는 지 확인하기 위해 다음과 같은 명령어를 입력하고 결과를 확인한다.

$ docker ps

CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS                                      NAMES
29f03aae9325        metabase/metabase:v0.29.3   "/app/run_metabase.sh"   23 hours ago        Up 23 hours         0.0.0.0:3000->3000/tcp                     metabase

확인 후 웹 브라우저를 이용해 localhost:3000으로 접속한다. 접속 시 Metabase 로그인 화면이 보인다면 정상적으로 실행된 것이다. 

Nginx 설치 및 실행 


Nginx를 Metabase에 연결하기 위해서 아래와 같이 Config 파일을 수정한다. Pem 파일을 어떻게 생성하는 지에 대한 부분은 이 문서의 범위를 벗어나므로 다른 사이트를 참고해 생성하도록 한다.

server {
  listen 80;
  listen [::]:80;
  return 301 https://$host$request_uri;
}

server {
  listen 443;

  ssl on;
  ssl_certificate  /nginx/data/.pem;
  ssl_certificate_key  /nginx/data/.pem;

  location / { 
    proxy_pass http://172.17.0.1:3000;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
}

Docker Container 생성 시 기본 네트워크 드라이버 설정은 Brigde이다. 

Docker Container 네트워크 드라이버 설정에 대한 자세한 내용은 블로그 문서 Docker Container Network 중 Bridge에 대한 설명 정리를 참고한다. 

이제 Nginx를 Docker를 이용해 Container로 실행한다. 다음과 같은 명령어를 입력한다. {path} 부분은 각 로컬 환경에 따라 설치된 metabase 경로에 맞게 설정해준다. 

$ docker run --name nginx -v $(path)/metabase/nginx/log:/var/log/nginx -v $(path)/metabase/nginx/data:/nginx/data -v $(path)/metabase/nginx/conf:/etc/nginx/conf.d -p 80:80 -p 443:443 -it -d nginx
$ docker ps

CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS                                      NAMES
4b4441129191        nginx                       "nginx -g 'daemon of…"   23 hours ago        Up 23 hours         0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   nginx
29f03aae9325        metabase/metabase:v0.29.3   "/app/run_metabase.sh"   23 hours ago        Up 23 hours         0.0.0.0:3000->3000/tcp                     metabase

Docker Container가 정상적으로 실행되었는 지 확인하기 위해 다음과 같은 명령어를 입력하고 결과를 확인한다.

결과 확인 


웹 브라우저를 이용해 아래와 같은 주소에 접속해 정상적으로 접속이 되는 지 확인한다.  https 를 사용하여 ssl 연결이 정상적으로 동작되는지 확인한다.

https://localhost

댓글남기기