以前、Elastic Beanstalkで構築しようとしたのですが、望んだとおりの結果が得られなかったので、自分でEC2へ導入してみようと思いました。
EC2インスタンスの用意
今回は「t3.small」を利用することにしました。
EBSは汎用SSD
の10GB
にしました。
※ Metabaseはポート3000で起動するので、3000にアクセスできるようにセキュリティーグループの設定をしてください。
※ Metabaseにアクセスする為に、Public IPアドレスを付与してください。
インスタンス生成時の設定 or Elastic IP
EC2へDockerをインストールする
yumアップデート
まずは、yumをアップデートします。
sudo yum update -y
complete!
が表示されれば完了です。
Dockerインストール
Dockerをインストールします。
sudo yum install docker -y
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を自動で起動するように設定します。
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を再起動する必要があります。
下記のコマンドで再起動後、再度確認してください。
sudo systemctl restart docker
上記のコマンドでも正常に実行できない場合は、インスタンスを再起動してみてください。
Metabaseのインストール
今回は、ローカルファイルシステムを使用して、H2埋め込みデータベースを実行し、アプリケーションのデータを保存する方法にします。
この方法だと、コンテナを削除すると、設定ファイル等がすべて消えてしまうので、本番運用をする際は、RDS等にPostgresSQL等のDBを用意して、アプリケーションデータを保存することが必要です。
docker run -d -p 3000:3000 --name metabase metabase/metabase
起動の確認
EC2のインスタンスのパブリックIPアドレスを確認します。
上記方法で確認したIPアドレスの3000番ポートにブラウザでアクセスします。
http://XX.XXX.xxx.xxx:3000
Metabaseの初期設定
個人情報の入力
必要な情報を入力します。
データを追加する
利用するデータベースの情報を追加します。
データ使用の優先度
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を取得し、実行情況を表示します。
docker ps -a
docker logs -f -t <コンテナID>