前提
- Azure DevOpsのプロジェクトを作成済み (Azure DevOps その1 初期準備)
- DevOpsのプロジェクトのアプリケーションはLaravelを選択 (Azure DevOps その3 Dockerの構成をCentOSベースに変更する)
チュートリアルを参考にする
AzureでLaravelアプリケーションのAppサービスからMySQLに接続する方法は、Microsoftのサイトチュートリアル:Azure で PHP と MySQL アプリを構築するを参考に作業すれば、基本的には接続出来るようだ。
接続のポイント
チュートリアルの中でAzure MySQL接続で参考にしたものをいくつかまとめてみた。
ファイアウォール設定
サーバーのファイアウォールを構成するには開始 IP と終了 IP の両方が 0.0.0.0 に設定されている場合、ファイアウォールは他の Azure リソースに対してのみ開かれます。
と書かれている。
ただ、チュートリアルが古いのか、今はファイアウォールに「0.0.0.0」を登録しなくても接続出来た。
もし設定が必要な場合は、 対象のAzure MySQLの「接続のセキュリティ」を開いて、IPアドレスに「0.0.0.0」を登録する。
SSL証明書
SSL 証明書を構成するを参考に、SSL証明書をダウンロードして、database.php
に使用するSSL証明書のファイル名を記載する。
今回、DockerでLaravelのAppサービスを作成するので、gitにSSL証明書をコミットして、Dockerfileにもコピー処理を記述しておく。
COPY BaltimoreCyberTrustRoot.crt.cer /var/www/html/Application/BaltimoreCyberTrustRoot.crt.cer
コピー先は.env
と同じ場所にすれば問題ないと思う。gitにコミットせず、curlで直接ダウンロードしてもいいと思う。
チュートリアル以外の設定
現状選択出来るAzure MySQLの最新バージョンは8.0で、新しめのバージョンに接続する場合はstrictモードをオフにする必要があるので、database.php
を変更する。
参考:MySQL 5.6 で「General error: 1364 Field ‘xxx’ doesn’t have a default value」が出る問題の解決方法
'mysql' => [ 'strict' => false, ],
確認
後は、ビルドを走らせて、Appサービスでデータ取得の確認が出来れば完了。