ステップ7:データベースをセットアップする

5.2版本
维护 不明意
5.0

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

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

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

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

码头工人组成へPostgreSQLを追加

私たちのローカル開発環境には,码头工人を用いてサービスを運用するようにしています。docker-compose.yamlファイルを作成し,PostgreSQLをサービスとして追加してください:

docker-compose.yaml
1 2 3 4 5 6 7 8 9 10
版本“3”服务数据库图像postgres: 13-alpine环境postgres_user.主要postgres_password.主要POSTGRES_DB主要港口5432

PostgreSQLサーバをインストールし,データベース名やクレデンシャルを制御ための环境环境ますしますます。

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

注釈

pdo_pgsql拡張は,PHPをセットアップした前のステップでインストールされているはずです。

码头工人组成を起動しましょう

码头工人组成をバックグラウンドで起動します(-D.):

1
$ docker-组成-d

データベースが起動するのを待って,すべて正しく動いているかチェックしましょう:

1 2 3 4 5
美元docker-compose ps命令国家港口名称  --------------------------------------------------------------------------------------- guestbook_database_1 docker-entrypoint.sh postgres起来0.0.0.0:32780-> 5432 / TCP

もしコンテナがが动词しいなかったり,状态カラムが向上になっていなければ,码头工人组成のログをチェックしましょう:

1
美元docker-compose日志

ローカルローカルのデータベースベースへの

psqlコマンドラインを使用することが便利なときもあります。しかし,データベース名やクレデンシャルを覚えておく必要があります。また,ホスト上で動いているデータベースのローカルポートも知る必要があります。码头工人は,同時にPostgreSQLを使用するプロジェクトが一つ以上あったときでも動くようにランダムなポートを選択します(ローカルポートはdocker-composepsコマンドコマンドで力できます)。

欧宝娱乐app下载地址symfony cliでpsqlを実行する際は,何も覚えておく必要はありません。

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

この規約があるので,欧宝娱乐app下载地址运行をを使ってデータデータベースに接続することがより単単なる:

1
运行欧宝娱乐app下载地址PSQL

注釈

あなたのローカル开放环境にpsqlバイナリがないときは,docker-composeを介して実行することも可能です:

1
docker-compose美元执行数据库psql主要

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

pg_dump

1
$ 欧宝娱乐app下载地址symfony运行pg_dump -data-ock> dump.sql

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

1
运行欧宝娱乐app下载地址PSQL < dump.sql

警告

データを失いたくない場合は,docker-compose下来を実行しないようにしましょう。もしくはバックアップを先に取りましょう。

PostgreSQLをSy欧宝娱乐app欧宝体育应用最新版app下载下载地址mfonyCloudへ追加

欧宝娱乐app欧宝体育应用最新版app下载下载地址SymfonyCloudの本番インフラでは,PostgreSQLのようなサービスを追加する際に,現在何も書かかれていない.欧宝娱乐app下载地址symfony / services.yamlファイルを使用します:

.欧宝娱乐app下载地址symfony / services.yaml
1 2 3 4
db类型postgresql: 13磁盘1024大小年代

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

また,アプリケーションコンテナとDBを”リンク”する必要があります。これは,.欧宝娱乐app下欧宝体育应用最新版app下载载地址symfony.cloud.yamlに記述されます:

.欧宝娱乐app下欧宝体育应用最新版app下载载地址symfony.cloud.yaml
1 2
的关系数据库“db: postgresql”

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

最後に,pdo_pgsql拡張をPHPランタイムに追加しましょう:

.欧宝娱乐app下欧宝体育应用最新版app下载载地址symfony.cloud.yaml
1 2 3 4
运行扩展-pdo_pgsql#这里的其他扩展

これが.欧宝娱乐app下欧宝体育应用最新版app下载载地址symfony.cloud.yamlに行った変更の完全なdiffです:

patch_file
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
——/ .sy欧宝娱乐app下欧宝体育应用最新版app下载载地址mfony.cloud.yaml+ + + b欧宝娱乐app下欧宝体育应用最新版app下载载地址 / .symfony.cloud.yaml@@ -4,6 +4,7 @@ type: php:7.4运行时:扩展:+ - pdo_pgsql- apcu - mbstring -钠@@ -21,6 +22,9 @@ build:磁盘:512.+关系:+数据库:“DB:PostgreSQL”+网络:位置:“/”:

これらの変更をコミットして,S欧宝娱乐app欧宝体育应用最新版app下载下载地址ymfonyCloudへもう一度デプロイしましょう:

1 2 3.
$ git add。$ git commit -m配置数据库的美元欧宝娱乐app下载地址symfony部署

欧宝娱乐app欧宝体育应用最新版app下载下载地址SymfonyCloudのデータベースへのアクセス

PostgreSQLが码头工人経由のローカルと,Symfon欧宝娱乐app欧宝体育应用最新版app下载下载地址yCloudの本番で動いています。

ここで见たように,欧宝娱乐app下载地址运行コマンドで環境変数が公開されているので,欧宝娱乐app下载地址运行psqlを実行すると码头工人によってホストされているデータベースに自動的に接続することができます。

本番のコンテナ上のPostgreSQLに接続したければ,ローカル環境とSym欧宝娱乐app欧宝体育应用最新版app下载下载地址fonyCloudの間でSSHトンネルを開く事が可能です:

1
$ 欧宝娱乐app下载地址symfony tunnel:打开——暴露env-vars

デフォルトでは,S欧宝娱乐app欧宝体育应用最新版app下载下载地址ymfonyCloudのサービスは,ローカル環境に環境変数を公開していません。——expose-env-varsフラグを使用して明示する必要があります。本番のデータベースに接続するのは,危険な運用だからです。本当のデータを壊してしまうかもしれません。フラグを必須とすることで,あなたがしようとしていることの確認をしているのです。

今度は,前のように欧宝娱乐app下载地址运行psql経由でリモートのpostgresqlデータベースへ接続しましょ

1
运行欧宝娱乐app下载地址PSQL

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

1
sy欧宝娱乐app下载地址mfony隧道:美元接近

ちなみに

壳牌の代わりに本番のデータベース上でSQLを実行するのに欧宝娱乐app下载地址SQL.コマンドも使用することができます。

环境分数を公开する

環境変数を使うことで,码头工人组成とSymfonyClo欧宝娱乐app欧宝体育应用最新版app下载下载地址udはシームレスにSymfonyと連携することができます。

欧宝娱乐app下载地址var:出口をを行して欧宝娱乐app下载地址が公開している全ての環境変数をチェックしてみましょう:

1 2 3 4 5 6 7 8
sy欧宝娱乐app下载地址mfony var:美元出口PGHOST127.0.0.1PGPORT32781PGDATABASE主要PGUSER主要PGPASSWORD主要#……

PG *環境変数はpsqlユーティリティユーティリティで使われれますははどうでしょうか?

-expose-env-varsフラグをセットして,s欧宝娱乐app欧宝体育应用最新版app下载下载地址ymfonycloudへへのトンネルをするとととするするとするするするvar:出口コマンドコマンド,リモートの环境変を返し

1 2 3.
$ 欧宝娱乐app下载地址symfony tunnel:open——open -env-vars

インフラストラクチャ情iciticalをを记述

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


  • «前ステップ6:コントローラーを作成する
  • 下一个”ステップ8:データデータ构造の明

这项工作包括代码样本,是在a下获得的许可Creative Commons By-NC-SA 4.0许可证。