Closed17
Azureでマイクラ鯖をホストする作業ログ
記事作成のために、くらでべチャンネルでやってた
マイクラ鯖のAzureへのデプロイについて、
りおさん謹製スクリプトを使わず、その中身を参考にしながら手を動かして
マイクラ鯖をデプロイしてみます
実は一回やったことはあるので、それをより分かりやすくするように記事を書きたい
いまのところ、
- リソースグループの作成
- ストレージアカウントの作成
- ファイルシェアの作成
までは普通にPotalで簡単にできるんだが、
Azure Container Instancesでファイルシェアをボリュームにマウントする場合
Portalだとできる手段が見つからなかった
手段としては
- azコマンドでスクリプト書く→くらでべそのままでいける
- Resource Manager templateで作る→Portalで完結する
今のところResource Manager テンプレから生成するのが良さそう
話は戻るが、dockerファイルのほうをよく見てみると
環境変数を設定してやることによっていろいろマイクラ鯖の設定をいじれそうなのである
りおさんはdockerファイルを作る時点でメモリの制限を指定しているが
実はもとのdockerリポジトリのほうで、のちに環境変数をいじれるようになったらしい
いいね
とりままずはリソースグループを東日本リージョンで作った
ストレージアカウントを作っていく
りおさんのスクリプトを見てみると、Premium_LRSという文字列があったので
おそらくパフォーマンスがpremiumでレプリケーションがLRS(ローカル冗長ストレージ)のことなんだと思うけどLRSが良くわからん
とりあえずそれ以外の設定は変えずにやってみる
次にストレージアカウントでファイル共有を設定していく
名前を指定して、クオータは特に指定しなかった
次にContainer Instancesのリソースを作っていく。
azコマンドを使った場合は以下になるので、これと同じように設定していく
az container create --image rioriost/minecraft-server -g $ACI_RES_GRP -n $ACI_CNT_NAME \
--ip-address Public --ports 25565 25575 \
--dns-name-label $ACI_CNT_NAME \
--cpu 2 --memory 8 \
-e EULA=TRUE ENABLE_RCON=true \
RCON_PASSWORD=$RCON_PASSWORD \
--azure-file-volume-account-name $ACI_STR_AN \
--azure-file-volume-account-key "$STORAGE_KEY" \
--azure-file-volume-share-name $ACI_STR_SH_NAME \
--azure-file-volume-mount-path /data/ \
-o tsv --query "provisioningState"
必要なのは、
- image→dockerhubから指定
- リソースグループ
- コンテナの名前
- ipアドレスの公開→publicに設定
- ポート番号→25565、25575を指定
- DNS名前ラベル→これがurlになりそう
- CPUとメモリ→1コア2GBとかにする
- 環境変数
- EULA=TRUE
- ENABLE_RCON=true
- RCON_PASSWORD
- MEMORYなんちゃら
- VERSION=1.16.4
- SEED適当に
- Volume系
- アカウント名→たぶんストレージアカウント名
- ShareName→ファイル共有名
- mount path→/data/
ボリューム関係はこんな感じになりそう
"volumes": [
{
"name": "filesharevolume",
"azureFile": {
"shareName": "acishare",
"storageAccountName": "<Storage account name>",
"storageAccountKey": "<Storage account key>"
}
}
]
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"variables": {
"containername": "ninisan-minecraft-container",
"containerimage": "itzg/minecraft-server"
},
"resources": [
{
"name": "ninisan-minecraft-container",
"type": "Microsoft.ContainerInstance/containerGroups",
"apiVersion": "2019-12-01",
"location": "[resourceGroup().location]",
"properties": {
"containers": [
{
"name": "[variables('containername')]",
"properties": {
"image": "[variables('containerimage')]",
"resources": {
"requests": {
"cpu": 1,
"memoryInGb": 2
}
},
"volumeMounts": [
{
"name": "filesharevolume",
"mountPath": "/data"
}
],
"environmentVariables":[
{
"name": "EULA",
"value": "TRUE"
},
{
"name": "ENABLE_RCON",
"value": "true"
},
{
"name": "RCON_PASSWORD",
"value": ""
},
{
"name": "MEMORY",
"value": "2G"
},
{
"name": "VERSION",
"value": "1.16.4"
},
{
"name": "SEED",
"value": "0123456789"
}
]
}
}
],
"osType": "Linux",
"ipAddress": {
"type": "Public",
"ports": [
{
"protocol": "tcp",
"port": "25565"
},
{
"protocol": "tcp",
"port": "25575"
}
],
"dnsNameLabel": ""
},
"volumes": [
{
"name": "filesharevolume",
"azureFile": {
"shareName": "minecraft-file-share",
"storageAccountName": "ninisanminecraft",
"storageAccountKey": ""
}
}
]
}
}
]
}
{
"status": "Failed",
"error": {
"code": "UnreferencedIpAddressPorts",
"message": "'ipAddress' の次のポート '25565,25575' は、コンテナー グループ 'ninisan-minecraft-container' のどのコンテナーでも使用されていません。"
}
}
こういわれてしまった
コンテナのプロパティにport二つを含めたところ、なんかいい感じにデプロイができたかもしれない
うごいた!
このスクラップは2020/12/19にクローズされました