LoginSignup
0
1

More than 1 year has passed since last update.

WindowsServer2019でDockerComposeを使ってmetabaseを構築する方法

Posted at

Azure使うならAppService使った方が良さそうなのですが、
今回はAzureVMを使って構築していこうと思います。

環境

AzureVM
OS: WindowsServer 2019-Datacenter
サイズ: Standard E2s v3

構成図

image.png

DockerDesctop for Windows をインストール

インストール後起動しておきます。

hyper-vの設定

初期から入っていたのでパスします。
もし設定がされていなかったら下記の通りに設定を行います。

作業フォルダ作成

作業用フォルダを作成する。
今回はデスクトップにおいてます。

C:\Users\username\Desktop\metabase
フォルダ構成
/metabase
 ├ /db
 ├ /metabase-data
 ├ docker-compose.yml
 └ dockerfile-nginx

Docker-Compose.ymlを記載

docker-compose.yml
version: "3.7"

services:
    postgres:
        image: postgres:13
        container_name: postgres
        ports:
          - "5432:5432"
        volumes:
          - ./db/postgres/init.d:/docker-entrypoint-initdb.d
          - db-data:/var/lib/postgresql/data
        environment:
          POSTGRES_USER: root       # DB USER
          POSTGRES_PASSWORD: root   # DB Password
          POSTGRES_INITDB_ARGS: "--encoding=UTF-8"
        hostname: postgres
        user: root
        restart: always

    pgadmin4:
        image: dpage/pgadmin4:5
        container_name: pgadmin4
        ports:
            - "8000:80"
        volumes:
            - ./db/pgadmin4:/var/lib/pgadmin
        environment:
            PGADMIN_DEFAULT_EMAIL: test@test.com     # pgAdmin Address
            PGADMIN_DEFAULT_PASSWORD: test  # pgAdmin Password
        hostname: pgadmin4
        links:
            - postgres
        restart: always

    metabase:
        image: metabase/metabase:latest
        container_name: metabase
        ports:
            - 3000:3000
        volumes:
            - ./metabase-data:/metabase-data
        environment:
            MB_DB_FILE: ./metabase-data/metabase.db
        links:
            - postgres
        restart: always

    nginx:
        image: nginx-tls
        container_name: nginx
        links: 
            - metabase
        volumes:
            - /Certbot/archive/sandboxmm.japaneast.cloudapp.azure.com:/etc/cert
        ports: 
            - 443:443
        restart: always

volumes:
    db-data:
        external: true

作業フォルダ直下に配置します。

volume作成

cmd
docker volume create --name db-data

dockerfileを作成しビルドする

dockerfile-nginx
FROM nginx:latest
EXPOSE 443/tcp
ADD https.conf /etc/nginx/conf.d/default.conf

作業フォルダ直下に配置します。

cmd
docker build -t nginx-tls -f dockerfile-nginx .

作業フォルダに移動してビルドします。

ドメイン取得

AzureVMの場合は基本に表示されているDNS名のところから取得できます。

image.png

ここで設定したものは次の証明書の設定で使用するので覚えておきましょう。

証明書の設定

管理者としてcmdを起動

こちらに記載している方法に従います。
1.https://dl.eff.org/certbot-beta-installer-win32.exeでWindows用のCertbotインストーラーの最新バージョンをダウンロードします。
2.下記を実行して質問に答えていきます。
1つの目質問でドメインを聞かれるはずです。先ほどのDNS名を書きます。

メールアドレスを設定したい方は-m yourmail@mail.comのオプションを追加して実行してください。

certbot certonly --standalone

Windows Defenderファイアウォールの設定

サーバーマネージャー >> ツール >> セキュリティが強化されたWindowsDefenderファイアーウォール を開きます

image.png
左側の受信の規則をクリックして、右側の新しい規則をクリック

規則の種類:ポート
プロトコルおよびポート:TCPの443と80
操作:接続を許可する
プロファイル:ドメイン、プライベート、パブリックすべてにチェック
名前:適当な名前を付けてください

スタートアップの設定

DockerDesktopの設定

Start Docker Desktop when you log in にチェックが入ってることを確認

image.png

自動サインイン設定

ファイル目を指定して実行から netplwiz を実行
ユーザーがこのコンピューターを使うにはの部分のチェックを外す
パスワードを求められるので入力
最後にOKで終了

image.png

ただこの方法だとDockerの起動にこけたらそのままになってしまうので他にいい方法がないか
模索してます。

シャットダウンの設定

たぶんシャットダウン時にDockerDesktopがいい感じにしてくれるとは思うのですが
念のためbatファイルを仕込みます。

shatdown.bat
cd C:\Users\<username>\Desktop\metabase
docker-compose stop

ファイル名を指定して実行からgpedit.mscを実行

コンピューターの構成 >> Windowsの設定 >> スクリプト(スタートアップ/シャットダウン) を開きます。
シャットダウンをクリックします。

ここで先ほど作成したbatファイルを設定します。

0
1
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
0
1