Azure使うならAppService使った方が良さそうなのですが、
今回はAzureVMを使って構築していこうと思います。
環境
AzureVM
OS: WindowsServer 2019-Datacenter
サイズ: Standard E2s v3
構成図
DockerDesctop for Windows をインストール
インストール後起動しておきます。
hyper-vの設定
初期から入っていたのでパスします。
もし設定がされていなかったら下記の通りに設定を行います。
作業フォルダ作成
作業用フォルダを作成する。
今回はデスクトップにおいてます。
C:\Users\username\Desktop\metabase
/metabase
├ /db
├ /metabase-data
├ docker-compose.yml
└ dockerfile-nginx
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作成
docker volume create --name db-data
dockerfileを作成しビルドする
FROM nginx:latest
EXPOSE 443/tcp
ADD https.conf /etc/nginx/conf.d/default.conf
作業フォルダ直下に配置します。
docker build -t nginx-tls -f dockerfile-nginx .
作業フォルダに移動してビルドします。
ドメイン取得
AzureVMの場合は基本に表示されているDNS名のところから取得できます。
ここで設定したものは次の証明書の設定で使用するので覚えておきましょう。
証明書の設定
管理者として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ファイアーウォール を開きます
規則の種類:ポート
プロトコルおよびポート:TCPの443と80
操作:接続を許可する
プロファイル:ドメイン、プライベート、パブリックすべてにチェック
名前:適当な名前を付けてください
スタートアップの設定
DockerDesktopの設定
Start Docker Desktop when you log in にチェックが入ってることを確認
自動サインイン設定
ファイル目を指定して実行から netplwiz を実行
ユーザーがこのコンピューターを使うにはの部分のチェックを外す
パスワードを求められるので入力
最後にOKで終了
ただこの方法だとDockerの起動にこけたらそのままになってしまうので他にいい方法がないか
模索してます。
シャットダウンの設定
たぶんシャットダウン時にDockerDesktopがいい感じにしてくれるとは思うのですが
念のためbatファイルを仕込みます。
cd C:\Users\<username>\Desktop\metabase
docker-compose stop
ファイル名を指定して実行からgpedit.mscを実行
コンピューターの構成 >> Windowsの設定 >> スクリプト(スタートアップ/シャットダウン) を開きます。
シャットダウンをクリックします。
ここで先ほど作成したbatファイルを設定します。