OpenShift v3で、アプリケーションとDBを連携させる手順を紹介します。サーバーのセットアップと、簡単なHello Worldテスト手順は、こちらの記事(Hello world, OpenShift v3)を参考にしてください。
また、今回の手順の詳しい解説は、nekopさんの書いたハンズオン にあります。ご参照ください。
アプリケーションとデータベースの接続
1. データベースの作成
oc new-app mysql --env=MYSQL_USER=user --env=MYSQL_PASSWORD=pass --env=MYSQL_DATABASE=testdb -l db=mysql
これだけです。PodがREADYになればDataBaseのセットアップは完了です。
$ oc get pod
NAME READY STATUS RESTARTS AGE
mysql-55-centos7-1-0ydzh 1/1 Running 0 22s
2. アプリケーションの作成
アプリケーションをソースコードからデプロイします。
oc new-app https://github.com/nak3/hello-php.git -l app=php
ポイントは、アプリケーションからの接続先の設定で、index.phpの4行目の環境変数だけです。DB接続先アドレスが、MYSQL_55_CENTOS7
+ _SERVICE_HOST
となることにご注目ください。
php アプリケーションもREADYになったらOKです。
$ oc get pod
NAME READY STATUS RESTARTS AGE
hello-php-1-build 0/1 ExitCode:0 0 3m
hello-php-1-gvqo7 1/1 Running 0 1m
mysql-55-centos7-1-0ydzh 1/1 Running 0 6m
ここで、hello-phpのアプリケーションに、DBのパスワード、ユーザー名、データベース名を教えてあげる必要があります。
$ oc env dc hello-php MYSQL_USER=user MYSQL_PASSWORD=pass MYSQL_DATABASE=testdb
deploymentconfigs/hello-php
設定した環境変数は、以下のコマンドで確認することができます。
$ oc env dc hello-php --list
# deploymentconfigs hello-php, container hello-php
MYSQL_USER=user
MYSQL_PASSWORD=pass
MYSQL_DATABASE=testdb
あとは、サービスIPを確認して、ブラウザからアクセスしてみましょう!(以下の場合、172.30.130.26:8080
)
$ oc get svc hello-php
NAME CLUSTER_IP EXTERNAL_IP PORT(S) SELECTOR AGE
hello-php 172.30.130.26 <none> 8080/TCP app=php,deploymentconfig=hello-php 20m
以上です。