建立数据库
建立数据库
会议留言簿网站旨在收集会议期间的反馈。我们需要将会议参与者提供的评论存储在永久存储中。
一条评论最好用一个固定的数据结构来描述:作者、他们的电子邮件、反馈的文本和一张可选的照片。最适合存储在传统关系数据库引擎中的数据类型。
PostgreSQL是我们将使用的数据库引擎。
将PostgreSQL添加到Docker Compose
在我们的本地机器上,我们决定使用Docker来管理服务。生成的docker-compose.yml
文件中已经包含PostgreSQL作为服务:
这将安装一个PostgreSQL服务器,并配置一些控制数据库名称和凭证的环境变量。价值观并不重要。
我们还公开了PostgreSQL端口(5432
),将该容器转移到本地主机。这将帮助我们从我们的机器访问数据库:
请注意
的pdo_pgsql
扩展应该在前面的步骤中设置PHP时安装。
开始撰写Docker
在后台启动Docker Compose (- 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 Compose日志:
1
$docker-compose日志
访问本地数据库
使用psql
命令行实用程序有时可能被证明是有用的。但是您需要记住凭据和数据库名称。不太明显的是,您还需要知道数据库在主机上运行的本地端口。Docker选择一个随机端口,这样你就可以在同一时间使用PostgreSQL处理多个项目(本地端口是输出的一部分docker-compose ps
).
如果你跑了psql
通过Symfonob娱乐下载y CLI,你不需要记住任何东西。
Symfob娱乐下载ony 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上的生产基础设施,添加类似PostgreSQL的服务应该在.platform / services.yaml
文件,这已经通过webapp
包的配方:
的数据库
service是一个PostgreSQL数据库(与Docker的版本相同),我们希望为其提供1GB的磁盘。
我们还需要将DB“链接”到应用程序容器,这在.platform.app.yaml
:
的数据库
服务类型postgresql
引用为数据库
在应用程序容器上。
检查pdo_pgsql
扩展已经为PHP运行时安装:
访问Platform.sh数据库
PostgreSQL现在既通过Docker本地运行,也在Platform.sh的生产环境中运行。
正如我们刚才看到的,跑步ob娱乐下载Symfony运行PSQL
通过暴露的环境变量,自动连接到Docker托管的数据库ob娱乐下载symfony运行
.
如果你想连接到生产容器上的PostgreSQL,你可以在本地机器和Platform.sh基础架构之间打开一个SSH隧道:
1 2
$ob娱乐下载syob直播appmfony云:隧道:开放$ob娱乐下载symfony var: expose-from-tunnel
默认情况下,Platform.sh服务不会作为本地机器上的环境变量公开。方法显式地执行此操作var: expose-from-tunnel
命令。为什么?连接到生产数据库是一个危险的操作。你可以随意摆弄真正的数据。
现在,通过连接到远程PostgreSQL数据库ob娱乐下载Symfony运行PSQL
像以前一样:
1
$ob娱乐下载Symfony运行PSQL
完成后,别忘了关闭隧道:
1
$ob娱乐下载syob直播appmfony云:隧道:关闭
提示
要在生产数据库上运行一些SQL查询,而不是获取shell,还可以使用ob娱乐下载symfony的sql
命令。
暴露环境变量
得益于环境变量,Docker Compose和Platform.sh可以与Symfony无缝工作。ob娱乐下载
检查所暴露的所有环境变量ob娱乐下载
通过执行ob娱乐下载symfony var:出口
:
1 2 3 4 5 6 7 8
$ob娱乐下载symfony var:出口PGHOST=127.0.0.1 PGPORT=32781 PGDATABASE=主PGUSER=主PGPASSWORD=主#……
的PG *
方法读取环境变量psql
实用程序。其他人呢?
当一个隧道打开到Platform.shvar: expose-from-tunnel
,var:出口
命令返回远程环境变量:
1 2 3 4
$ob娱乐下载syob直播appmfony云:隧道:开放$ob娱乐下载symfony var: expose-from-tunnel$ob娱乐下载symfony var:出口$ob娱乐下载syob直播appmfony云:隧道:关闭
描述基础设施
您可能还没有意识到这一点,但是将基础结构与代码一起存储在文件中会有很大帮助。Docker和Platform.sh使用配置文件来描述项目基础结构。当一个新特性需要额外的服务时,代码更改和基础设施更改都是同一个补丁的一部分。