[Azure] Azure Container Instance(ACI)でMySQL/MariaDBを使うときはmysql:5.6を使え
【追記】
「Azure Container Instance(ACI)ではMySQL/MariaDBが実質使えない!?かも!?」
というタイトルで記事を公開しました。
もう少し試したところ、mysql:5.6イメージであれば動きました。
TL;DR;
- Azure Container Instance(ACI)は、Azure StorageのFile共有をボリュームマウントできる
- File共有はCIFS(SMBマウント)なので、MySQL/MariaDBからのファイル操作要求に応えられない部分がある
- 要求に応えられないので、MySQL/MariaDBが動かない
- MySQL/MariaDBを動かすためには、ボリュームマウントを諦めなくてはいけない
つまり、ACIではMySQL/MariaDBのデータを永続化できない。
試したこと
Storageアカウントのバージョン
汎用(v1)、汎用(v2)どちらもダメでした。
冗長はLRSです。
Dockerイメージ
official mariadb、official mysql、bitnami mariadb、bitnami mysqlのいずれもダメでした。
【追記】
official mysql 5.6なら動くかもしれません。
(おまけ) ACIの作成
作成するときは、あらかじめyamlファイルを用意してazure cliに食わせます。
ACIはポータルからも作成できますが、azure cliからでないとグループを作成できないです。
これはmariadbとredmineをデプロイするyamlファイルです。内容的にはdocker composeみたいなものです。
aci-deploy.yaml
apiVersion: 2018-06-01
location: westus2
name: redmine
properties:
volumes:
- name: dbshare
azurefile:
shareName: dbshare
readOnly: false
storageAccountName: mystore
storageAccountKey: ***************************************
- name: redmineshare
azureFile:
shareName: redmineshare
readOnly: false
storageAccountName: mystore
storageAccountKey: ***************************************
containers:
- name: mariadb
properties:
image: mariadb
resources:
requests:
cpu: 1
memoryInGb: 1
ports:
- port: 3306
environmentVariables:
- name: MYSQL_ROOT_PASSWORD
secureValue: password123
- name: MYSQL_DATABASE
value: redmine
volumeMounts:
- name: dbshare
mountPath: /var/lib/mysql
- name: redmine
properties:
image: redmine
resources:
requests:
cpu: 1
memoryInGb: 1
ports:
- port: 80
- port: 443
environmentVariables:
- name: REDMINE_DB_MYSQL
value: localhost
- name: REDMINE_DB_USERNAME
secureValue: root
- name: REDMINE_DB_PASSWORD
secureValue: password123
volumeMounts:
- name: redmineshare
mountPath: /usr/src/redmine/files
osType: Linux
ipAddress:
type: Public
ports:
- protocol: tcp
port: '80'
- protocol: tcp
port: '443'
dnsNameLabel: my-redmine
restartPolicy: Never
tags: null
type: Microsoft.ContainerInstance/containerGroups
次のようにaz
コマンドを実行します。
az container create -g リソースグループ名 -f aci-deploy.yaml
リファレンス
ほんとは。。。
「Azure Container InstanceでRedmineを動かす方法」みたいな記事を書くつもりでいたのに、まさか失敗報告になるなんて。。。