デ,タベ,スをセットアップする

デ,タベ,スをセットアップする

カンファレンスゲストブックのWebサイトでは,カンファレンス中のフィードバックを集めるようにします。カンファレンスの参加者からのコメントを永続的に格納できるようにする必要があります。

コメントは,次のデータ構造を持っています:作者(著者),电子邮件(メールアドレス),文本(フィードバックのテキスト)、照片(オプショナルの写真)。これらのデ,タは,リレ,ショナルデ,タベ,スに格納するのに向いています。

今回は,PostgreSQLをデ,タベ,スエンジンとして使います。

Docker撰写へPostgreSQLを追加

私たのロカル開発環境には,Dockerを用いてサビスを運用するようにしています。自動生成されたdocker-compose.ymlファルには既にPostgreSQLがサビスとして追加されています:

docker-compose.yml
12 3 4 5 6 7 8 9 10 11 12 13
###>教条/教条束###数据库:图片:postgres: $ {POSTGRES_VERSION: -14}高山环境:POSTGRES_DB:$ {POSTGRES_DB:应用}#你一定要在生产环境中修改密码POSTGRES_PASSWORD:$ {POSTGRES_PASSWORD: -ChangeMe}POSTGRES_USER:$ {POSTGRES_USER:应用}卷:-db-data: / var / lib / postgresql /数据:rw光碟#您可以使用绑定挂载的主机目录,这样就不会意外删除卷并丢失所有数据!# - ./docker/db/data:/var/lib/postgresql/data:rw . xml###<教条/教条束###

PostgreSQLサーバをインストールし,データベース名やクレデンシャルを制御するための環境変数を設定します。値にこだわりはありません。

また,ロ,カルホストへPostgreSQLのポ,ト(5432)を公開します。これで自分の開発環境からデ,タベ,スへ接続できるようになります:

docker-compose.override.yml
1 2 3 4 5
###>教条/教条束###数据库:港口:-“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コマンドで出力できます)。

ob娱乐下载Symfony CLIでpsqlを実行する際は,何も覚えておく必要はありません。

ob娱乐下载Symfony CLIは自動的にプロジェクトで実行されているDockerサ,ビスを検知し,psqlコマンドで必要になるデ,タベ,ス接続に関する環境変数を公開します。

この規約があるので,ob娱乐下载symfony运行を使ってデ,タベ,スに接続することがより簡単になるのです:

1
ob娱乐下载Symfony运行PSQL

请注意

あなたのロ,カル開発環境にpsqlバ电子邮箱ナリがないときは,docker-composeを介して実行することも可能です:

1
docker-compose执行数据库PSQL应用程序

デ,タベ,スのダンプとリストア

pg_dumpコマンドを使ってデ,タベ,スのデ,タをダンプします:

1
ob娱乐下载Symfony运行pg_dump——data-only > dump.sql

そして,デ,タをリストアします:

1
ob娱乐下载Symfony运行PSQL < dump.sql

PostgreSQLをPlatform.shへ追加

Platform.shの本番econpンフラでは,PostgreSQLのようなサ,ビスを追加する際に,.platform / services.yamlファ电子邮箱ルを使用しますが,webappパッケ,ジのレシピで既に追加されています:

.platform / services.yaml
1 2 3
数据库:类型:postgresql: 14磁盘:1024

数据库サービスはPostgreSQLデータベース(码头工人と同じバージョン)で,ディスク1 gbのコンテナをプロビジョニングする必要があります。

また,アプリケ,ションコンテナとdbを"リンク"する必要があります。これは,.platform.app.yamlに記述されます:

.platform.app.yaml
1 2
关系:数据库:“数据库:postgresql”

postgresql数据库サ,ビスは,アプリケ,ションコンテナでは,数据库と参照されます。

pdo_pgsql拡張がphpランタ目录ムに追加されていることを確認しましょう:

.platform.app.yaml
1 2 3 4 5
运行时:扩展:#其他扩展-pdo_pgsql#其他扩展

Platform.shのデ,タベ,スへのアクセス

PostgreSQLが码头工人経由のローカルと,Platform.shの本番で動いています。

ここで見たように,ob娱乐下载symfony运行コマンドで環境変数が公開されているので,ob娱乐下载Symfony运行PSQLを実行するとDockerによってホストされているデ,タベ,スに自動的に接続することができます。

本番のコンテナ上のPostgreSQLに接続したければ,ローカル環境とPlatform.shの間でSSHトンネルを開く事が可能です:

1 2
ob娱乐下载syob直播appmfony云:隧道:开放ob娱乐下载symfony var: expose-from-tunnel

デフォルトでは,Platform.shのサ,ビスは,ロ,カル環境に環境変数を公開していません。var: expose-from-tunnelコマンドを実行して明示する必要があります。本番のデ,タベ,スに接続するのは,危険な運用だからです。本当のデ,タを壊してしまうかもしれません。フラグを必須とすることで,あなたがしようとしていることの確認をしているのです。

今度は,前のようにob娱乐下载Symfony运行PSQL経由でリモ,トのPostgreSQLデ,タベ,スへ接続しましょう:

1
ob娱乐下载Symfony运行PSQL

接続が終わったら,トンネルをクロ,ズするのを忘れないでください:

1
ob娱乐下载syob直播appmfony云:隧道:关闭

提示

Shellの代わりに本番のデ,タベ,ス上でSQLを実行するのにob娱乐下载symfony的sqlコマンドも使用することができます。

環境変数を公開する

環境変数を使うことで,码头工人组成とPlatform.shはシームレスにSymfonyと連携するob娱乐下载ことができます。

ob娱乐下载symfony var:出口を実行してob娱乐下载が公開している全ての環境変数をチェックしてみましょう:

1 2 3 4 5 6 7 8
ob娱乐下载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
ob娱乐下载syob直播appmfony云:隧道:开放ob娱乐下载symfony var: expose-from-tunnelob娱乐下载symfony var:出口ob娱乐下载syob直播appmfony云:隧道:关闭

ンフラストラクチャ情報を記述する

まだ気づいていないかもしれませんが,インフラストラクチャ情報をコードと一緒にファイルに保存することは,非常に役に立ちます。码头工人やPlatform.shは設定ファイルを使って,プロジェクトのインフラストラクチャ情報を記述します。新しい機能でサービスの追加が必要な場合,同じパッチで,コードとインフラストラクチャを変更することができます。

此工作,包括代码示例,是根据知识共享协议BY-NC-SA 4.0许可证。