Commit 1506ec32 authored by Cyrille's avatar Cyrille

Fix dump util

parent b8d3bafb
db
.idea
db # Volume with DB data
# GitHub Actions: CI/CD
> Использование GitHub как системы для непрерывной интеграции и развертывания современного веб-проекта
**Обязательно поменяйте пароль!**
Логин: `admin`
Пароль: `LecOaToQQNm0cWIMIf`
## Фиксация изменений
Воспользуйтесь скриптом `utils/dump.php`.
Скрип получает дамп базы данных с помощью *mysqldump* контейнера и сохраняет его по пути `dump/dump.sql` (относительно
корня проекта); при развёртывании этот дамп автоматически загружается в контейнер.
При миграции на другие ОС могут возникнуть проблемы с выводом в консоль и TTY. А именно: WSL2 сразу же отдаёт весь вывод
в STDOUT, мимо скрипта, поэтому дамп оказывается пуст; если перенаправить вывод, слетит кодировка. Поэтому **в Windows
надо делать дамп именно из консоли Windows (CMD, PowerShell)**.
version: "3.1"
services:
# admin
# LecOaToQQNm0cWIMIf
wordpress:
image: wordpress
image: wordpress:5.9.1-apache
restart: always
ports:
- "8080:80"
......@@ -20,5 +19,7 @@ services:
env_file:
- .env
volumes: # Use utils/dump.php to dump the database
- ./db:/var/lib/mysql
- db_data:/var/lib/mysql
- ./dumps:/docker-entrypoint-initdb.d
volumes:
db_data: {}
This source diff could not be displayed because it is too large. You can view the blob instead.
#!/usr/bin/env php
<?php
/**
* Usage: php utils/dump.php > dump.sql
* Usage: php utils/dump.php
* @todo parametrize
*/
......@@ -16,6 +17,9 @@ const USER = 'exampleuser'; // Database user
const PASSWORD = 'examplepass'; // Database password
const DB_NAME = 'exampledb';
// Real path of this script...
const TARGET = __DIR__ . '/../dumps/dump.sql';
$cmd = sprintf(
'docker-compose exec %s mysqldump -u%s -p%s %s',
......@@ -25,14 +29,17 @@ $cmd = sprintf(
DB_NAME
);
$sql = shell_exec($cmd);
$lines = explode("\n", $sql);
echo implode("\n", array_filter($lines, function (string $line) {
$result = implode("\n", array_filter($lines, function (string $line) {
foreach (TO_SKIP as $ban) {
if (str_starts_with($line, $ban)) return false;
if (strpos($line, $ban) === 0) return false;
}
return true;
}));
file_put_contents(TARGET, $result);
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment