15
8

More than 3 years have passed since last update.

【AWS】EC2へのMetabaseの導入

Last updated at Posted at 2020-02-06

以前、Elastic Beanstalkで構築しようとしたのですが、望んだとおりの結果が得られなかったので、自分でEC2へ導入してみようと思いました。

EC2インスタンスの用意

今回は「t3.small」を利用することにしました。
EBSは汎用SSD10GBにしました。
※ Metabaseはポート3000で起動するので、3000にアクセスできるようにセキュリティーグループの設定をしてください。
※ Metabaseにアクセスする為に、Public IPアドレスを付与してください。
  インスタンス生成時の設定 or Elastic IP

EC2へDockerをインストールする

yumアップデート

まずは、yumをアップデートします。

yumのアップデート
sudo yum update -y

complete!が表示されれば完了です。

Dockerインストール

Dockerをインストールします。

Dockerのインストール
sudo yum install docker -y

Dockerの起動

Dockerを起動します。

Docker起動
sudo systemctl start docker

起動コマンドのが実行できれば、下記のコマンドで起動できているかを確認します。

起動確認コマンド
sudo systemctl status docker
確認コマンド実行結果
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2020-02-06 00:51:30 UTC; 24s ago

実行結果にActive: active (running)と表示されていれば正常に起動されています。

Dockerの自動起動設定

再起動等を行った際に、Dockerを自動で起動するように設定します。

Docker自動起動設定
sudo systemctl enable docker

下記のような実行結果が表示されていれば、自動起動の設定が完了しています。

自動起動設定結果
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

ユーザーをDockerグループに追加

ec2-user を docker グループに追加すると、sudo を使用せずに Docker コマンドを実行できます。

ユーザー追加
sudo usermod -a -G docker ec2-user

実行が完了したら、下記のコマンドでDockerコマンドが実行できるか確認してください。

確認用コマンド
docker info
実行が成功した場合の結果表示
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 18.09.9-ce
Storage Driver: overlay2
  ・
  ・
  ・

確認コマンドが失敗する場合

下記の例のように表示された場合は、実行が失敗しています。

失敗時メッセージ
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.39/info: dial unix /var/ru
n/docker.sock: connect: permission denied

この場合、Dockerを再起動する必要があります。
下記のコマンドで再起動後、再度確認してください。

Docker再起動
sudo systemctl restart docker

上記のコマンドでも正常に実行できない場合は、インスタンスを再起動してみてください。

Metabaseのインストール

今回は、ローカルファイルシステムを使用して、H2埋め込みデータベースを実行し、アプリケーションのデータを保存する方法にします。
この方法だと、コンテナを削除すると、設定ファイル等がすべて消えてしまうので、本番運用をする際は、RDS等にPostgresSQL等のDBを用意して、アプリケーションデータを保存することが必要です。

Metabaseのdocker実行
docker run -d -p 3000:3000 --name metabase metabase/metabase

起動の確認

EC2のインスタンスのパブリックIPアドレスを確認します。

image.png

上記方法で確認したIPアドレスの3000番ポートにブラウザでアクセスします。
http://XX.XXX.xxx.xxx:3000

下記のような画面が表示されれば完了です。
image.png

Metabaseの初期設定

開始しましょうをクリックします。
image.png

個人情報の入力

必要な情報を入力します。

データを追加する

利用するデータベースの情報を追加します。

データ使用の優先度

Metabaseへの動作レポートの送信を行うかを選択する事ができます。

EC2再起動時の設定

コンテナの一覧を表示する

コンテナの情報を表示し、起動するコンテナIDを確認する。

コンテナの一覧を表示
docker ps -a
実行結果
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
01254c6459fa        metabase/metabase   "/app/run_metabase.sh"   8 hours ago         Up 6 minutes        0.0.0.0:3000->3000/tcp   metabase

コンテナの起動

下記のコマンドでコンテナを起動します。

コンテナの起動
docker start <CONTAINER ID> 

コンテナの自動起動設定

起動するコンテナ名を取得します。

コンテナ名の取得
docker ps -a
コンテナの自動起動設定
docker update --restart=always <コンテナ名>

下記のコマンドで自動起動の設定を確認できます。

自動起動設定確認コマンド
docker inspect -f "{{.Name}} {{.HostConfig.RestartPolicy.Name}}" $(docker ps -aq) | grep always

自動起動の無効化

コンテナの自動起動を無効化
docker update --restart=no <コンテナ名>

実行ログの取得

コンテナIDを取得し、実行情況を表示します。

コンテナIDの検索方法
docker ps -a
実行状況の取得
docker logs -f -t <コンテナID>
15
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
8