デ,タベ,スをセットアップする
デ,タベ,スをセットアップする
カンファレンスゲストブックのWebサイトでは,カンファレンス中のフィードバックを集めるようにします。カンファレンスの参加者からのコメントを永続的に格納できるようにする必要があります。
コメントは,次のデータ構造を持っています:作者(著者),电子邮件(メールアドレス),文本(フィードバックのテキスト)、照片(オプショナルの写真)。これらのデ,タは,リレ,ショナルデ,タベ,スに格納するのに向いています。
今回は,PostgreSQLをデ,タベ,スエンジンとして使います。
Docker撰写へPostgreSQLを追加
私たのロカル開発環境には,Dockerを用いてサビスを運用するようにしています。自動生成されたdocker-compose.yml
ファルには既にPostgreSQLがサビスとして追加されています:
PostgreSQLサーバをインストールし,データベース名やクレデンシャルを制御するための環境変数を設定します。値にこだわりはありません。
また,ロ,カルホストへPostgreSQLのポ,ト(5432
)を公開します。これで自分の開発環境からデ,タベ,スへ接続できるようになります:
请注意
pdo_pgsql
拡張は,phpをセットアップした前のステップでンストルされているはずです。
Docker撰写を起動しましょう
Docker撰写をバックグラウンドで起動します(- d
):
1
$Docker-compose up -d
デ,タベ,スが起動するのを待って,すべて正しく動いているかチェックしましょう:
1 2 3 4 5
$docker-compose ps命令国家港口名称 --------------------------------------------------------------------------------------- guestbook_database_1 docker-entrypoint.sh postgres 0.0.0.0:32780 - > 5432 / tcp
もしコンテナが起動していなかったり,状态
カラムが向上
になっていなければ,Docker撰写のログをチェックしましょう:
1
$docker-compose日志
ロ,カルのデ,タベ,スへのアクセス
psql
コマンドラ@ @ンを使用することが便利なときもあります。しかし,デ,タベ,ス名やクレデンシャルを覚えておく必要があります。また,ホスト上で動いているデ,タベ,スのロ,カルポ,トも知る必要があります。码头工人は,同時にPostgreSQLを使用するプロジェクトが一つ以上あったときでも動くようにランダムなポートを選択します(ローカルポートはdocker-compose ps
コマンドで出力できます)。
欧宝娱乐app下载地址Symfony CLIでpsql
を実行する際は,何も覚えておく必要はありません。
欧宝娱乐app下载地址Symfony CLIは自動的にプロジェクトで実行されているDockerサ,ビスを検知し,psql
コマンドで必要になるデ,タベ,ス接続に関する環境変数を公開します。
この規約があるので,欧宝娱乐app下载地址symfony运行
を使ってデ,タベ,スに接続することがより簡単になるのです:
1
$欧宝娱乐app下载地址Symfony运行PSQL
请注意
あなたのロ,カル開発環境にpsql
バ电子邮箱ナリがないときは,docker-compose
を介して実行することも可能です:
1
$docker-compose执行数据库PSQL应用程序
デ,タベ,スのダンプとリストア
pg_dump
コマンドを使ってデ,タベ,スのデ,タをダンプします:
1
$欧宝娱乐app下载地址Symfony运行pg_dump——data-only > dump.sql
そして,デ,タをリストアします:
1
$欧宝娱乐app下载地址Symfony运行PSQL < dump.sql
PostgreSQLをPlatform.shへ追加
Platform.shの本番econpンフラでは,PostgreSQLのようなサ,ビスを追加する際に,.platform / services.yaml
ファ电子邮箱ルを使用しますが,webapp
パッケ,ジのレシピで既に追加されています:
数据库
サービスはPostgreSQLデータベース(码头工人と同じバージョン)で,ディスク1 gbのコンテナをプロビジョニングする必要があります。
また,アプリケ,ションコンテナとdbを"リンク"する必要があります。これは,.platform.app.yaml
に記述されます:
postgresql
の数据库
サ,ビスは,アプリケ,ションコンテナでは,数据库
と参照されます。
pdo_pgsql
拡張がphpランタ目录ムに追加されていることを確認しましょう:
Platform.shのデ,タベ,スへのアクセス
PostgreSQLが码头工人経由のローカルと,Platform.shの本番で動いています。
ここで見たように,欧宝娱乐app下载地址symfony运行
コマンドで環境変数が公開されているので,欧宝娱乐app下载地址Symfony运行PSQL
を実行するとDockerによってホストされているデ,タベ,スに自動的に接続することができます。
本番のコンテナ上のPostgreSQLに接続したければ,ローカル環境とPlatform.shの間でSSHトンネルを開く事が可能です:
1 2
$欧宝娱乐app下欧宝体育应用最新版app下载载地址symfony云:隧道:开放$欧宝娱乐app下载地址symfony var: expose-from-tunnel
デフォルトでは,Platform.shのサ,ビスは,ロ,カル環境に環境変数を公開していません。var: expose-from-tunnel
コマンドを実行して明示する必要があります。本番のデ,タベ,スに接続するのは,危険な運用だからです。本当のデ,タを壊してしまうかもしれません。フラグを必須とすることで,あなたがしようとしていることの確認をしているのです。
今度は,前のように欧宝娱乐app下载地址Symfony运行PSQL
経由でリモ,トのPostgreSQLデ,タベ,スへ接続しましょう:
1
$欧宝娱乐app下载地址Symfony运行PSQL
接続が終わったら,トンネルをクロ,ズするのを忘れないでください:
1
$欧宝娱乐app下欧宝体育应用最新版app下载载地址symfony云:隧道:关闭
提示
Shellの代わりに本番のデ,タベ,ス上でSQLを実行するのに欧宝娱乐app下载地址symfony的sql
コマンドも使用することができます。
環境変数を公開する
環境変数を使うことで,码头工人组成とPlatform.shはシームレスにSymfonyと連携する欧宝娱乐app下载地址ことができます。
欧宝娱乐app下载地址symfony var:出口
を実行して欧宝娱乐app下载地址
が公開している全ての環境変数をチェックしてみましょう:
1 2 3 4 5 6 7 8
$欧宝娱乐app下载地址symfony var:出口PGHOST=127.0.0.1 PGPORT=32781 PGDATABASE=主PGUSER=主PGPASSWORD=主#……
PG *
環境変数はpsql
ユ,ティリティで使われます。他はどうでしょうか?
var: expose-from-tunnel
コマンドを実行して,Platform.shへのトンネルをオ,プンすると,var:出口
コマンドは,リモ,トの環境変数を返します:
1 2 3 4
$欧宝娱乐app下欧宝体育应用最新版app下载载地址symfony云:隧道:开放$欧宝娱乐app下载地址symfony var: expose-from-tunnel$欧宝娱乐app下载地址symfony var:出口$欧宝娱乐app下欧宝体育应用最新版app下载载地址symfony云:隧道:关闭
ンフラストラクチャ情報を記述する
まだ気づいていないかもしれませんが,インフラストラクチャ情報をコードと一緒にファイルに保存することは,非常に役に立ちます。码头工人やPlatform.shは設定ファイルを使って,プロジェクトのインフラストラクチャ情報を記述します。新しい機能でサービスの追加が必要な場合,同じパッチで,コードとインフラストラクチャを変更することができます。
より深く学ぶために