Commit 1506ec32 authored by Cyrille's avatar Cyrille

Fix dump util

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