
Bei der Entwicklung von Anwendungen ist es manchmal erforderlich, zwei Datenbanken (z. B. prod und dev) zu vergleichen.
Es gibt eine Reihe von Ansätzen zur Lösung dieses Problems - von der Erstellung einer Dump-Datei mit einer Datenbankstruktur und der anschließenden Verwendung von diff bis zur Verwendung spezialisierter kostenpflichtiger Lösungen wie dbForge oder RedGate (hier finden Sie eine große Liste ).
Compalex ist eine solche Lösung, die kostenlos und einfach zu bedienen kombiniert.
Compalex ist eine Reihe von Skripten zum schnellen Vergleich zweier Datenbankschemata. Zur Vereinfachung der Verwendung wird all dies in einem Docker-Container verpackt, der sowohl die Skripts selbst als auch die konfigurierte Umgebung für die Verbindung mit der Datenbank enthält.
Um den Container zu starten, müssen Sie Folgendes angeben:
docker run -it -e DATABASE_DRIVER='mysql' \
-e DATABASE_ENCODING='utf8' \
-e SAMPLE_DATA_LENGTH='100' \
-e DATABASE_HOST='host.docker.internal' \
-e DATABASE_PORT='3306' \
-e DATABASE_NAME='compalex_dev' \
-e DATABASE_USER='root' \
-e DATABASE_PASSWORD='password' \
-e DATABASE_DESCRIPTION='Developer database' \
-e DATABASE_HOST_SECONDARY='host.docker.internal' \
-e DATABASE_PORT_SECONDARY='3306' \
-e DATABASE_NAME_SECONDARY='compalex_prod' \
-e DATABASE_USER_SECONDARY='root' \
-e DATABASE_PASSWORD_SECONDARY='password' \
-e DATABASE_DESCRIPTION_SECONDARY='Production database' \
-p 8000:8000 dlevsha/compalexWo:
DATABASE_DRIVER - gebrauchter Treiber für die Verbindung
mysql- für MySQLpgsql- für PostgreSQLdblib- für Microsoft SQL Serveroci- für Oracle
DATABASE_HOSTund DATABASE_HOST_SECONDARY ist der Hostname oder die IP, um eine Verbindung zum ersten und zweiten Server herzustellen.
Wenn die Basen lokal bereitgestellt werden für localhost:
Für MacOS- und Windows-Benutzer : Verwenden Sie host.docker.internalstattdessen localhost, da das im Container ausgeführte Skript eine Verbindung zum Host-Computer herstellen soll.
Linux: --network host ( "" ) DB localhost, ip a docker0 ip .
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500
link/ether 02:42:e8:a9:95:58 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft foreverDB SSH
SSH DB - SSH localhost , .
:
ssh -L 1522:localhost:1521 [user name]@[remote host 1]
ssh -L 1523:localhost:1521 [user name]@[remote host 2] 1521 remote host 1 remote host 2 localhost 1522 1523 .
DB, application , DB, :
ssh -L 1522:[remote database server 1]:1521 [user name]@[remote application host 1]
ssh -L 1523:[remote database server 2]:1521 [user name]@[remote application host 2] DATABASE_HOST and DATABASE_HOST_SECONDARY ip, , .
- IP DB ( , ).
DATABASE_PORT and DATABASE_PORT_SECONDARY - .
:
3306- Mysql5432- PostgreSQL1433- MSSQL1521- Oracle
DATABASE_NAME and DATABASE_NAME_SECONDARY -
DATABASE_USER / DATABASE_PASSWORD and DATABASE_USER_SECONDARY / DATABASE_PASSWORD_SECONDARY -
DATABASE_DESCRIPTION and DATABASE_DESCRIPTION_SECONDARY - (, ).
, http://localhost:8000. -, , .

.
eLinks, HTML- .
, ( ) :
$ elinks http://localhost:8000:

( ).