Подготовка базы данн н

Подготовка базы данн н

Сайтгостевойкнигиконференциипредназначендлясбораотзывоввовремяконференций。Намнеобходимохранитькомментарии,оставленныеучастникамиконференции。

Лучшевсегокомментарийописываетсяследующейструктуройданных:автор,егоэлектроннаяпочта,текстсообщенияифотография(необязательно)。Такогородаинформациюлучшевсегохранитьвтрадиционнойреляционнойбазеданных。

МыбудемиспользоватьсервербазыданныхPostgreSQL。

Добавление 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).

Если вы зап пускаетеpsqlспомощьюSyob娱乐下载mfony CLI,вамненужноничегопомнить。

ob娱乐下载Symfony CLIавтоматическиобнаруживаетсервисы码头工人,запущенныедляпроекта,иустанавливаетпеременныеокружения,необходимые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

Добавлениетакогосервиса,какPostgreSQL,винфраструктурупродакшенанаPlatform.sh,делаетсячерезизменениявфайле.platform / services.yaml,“по о уже б о о о о о с сделано с с ре е ре пт”webapp

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

Сервис数据库——этоPostgreSQL(такойжеверсии,чтоидля码头工人),которыймыразместимвнебольшомконтейнересдискомобъёмом1Гб。

Такженеобходимо”привязать”БДкконтейнеруприложения,которыйописанв.platform.app.yaml

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

Сервис数据库типаpostgresqlуказанкак数据库в конте те е приложения。

Последним а о ом м м м р од ет доба а ление php -мод л л л лpdo_pgsql

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

Доступ к ба а а а а а а а а а а а

PostgreSQLтеперьработаеткаклокальночерез码头工人,такинапродакшеневPlatform.sh。

Как мы тол л ко о т т то идел, п о запуск кob娱乐下载Symfony运行PSQLпроисходитавтоматическоеподключениекбазеданных,размещённойвконтейнере码头工人。Этопроисходитблагодаряпеременнымокружения,установленнымкомандойob娱乐下载symfony运行

ЕсливыхотитеподключитьсякPostgreSQL,расположенномвконтейнерахнапродакшен,евыможетеоткрытьSSH -туннельмеждувашейлокальноймашинойиинфраструктуройPlatform.sh:

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

ПоумолчаниюсервисыPlatform.shнеотображаютсявпеременныхокруженияналокальноймашине。Нужно ка а а ат с то и но, испол з о флаг——expose-env-vars.Почему吗?Подключениекбазеданныхнапродакшен——сервередовольноопасно,посколькуестьрискповредитьреальныеданные。

ТеперьподключитеськудалённойбазеданныхPostgreSQLспомощьюкомандыob娱乐下载Symfony运行PSQL, как ан:

1
ob娱乐下载Symfony运行PSQL

Когдазавершитеработу、незабудьтезакрытьтуннель:

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

提示

ДлявыполненияSQL -запросовкбазеданныхнапродакшен,евместоиспользованиякоманднойоболочки,выможетеиспользоватькомандуob娱乐下载symfony的sql

Просмотр пе е еменн окружения

码头工人组成и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.Аостальные吗?

Когда т о ннел к平台。sh отк к с помощьюvar: expose-from-tunnel,команда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许可证。