
Lors du développement d'applications, il est parfois nécessaire de comparer deux bases de données (par exemple, prod et dev).
Il existe un certain nombre d'approches pour résoudre ce problème - de la création d'un fichier de vidage avec une structure de base de données à l'utilisation de diff, à l'utilisation de solutions payantes spécialisées telles que dbForge ou RedGate (il y a une grande liste ici ).
Compalex est l'une de ces solutions qui combine gratuit et facile à utiliser.
Compalex est un ensemble de scripts permettant de comparer rapidement deux schémas de base de données. Pour faciliter l'utilisation, tout cela est emballé dans un conteneur Docker qui contient à la fois les scripts eux-mêmes et l'environnement configuré pour la connexion à la base de données.
Pour démarrer le conteneur, vous devez spécifier:
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/compalexOù:
DATABASE_DRIVER - pilote utilisé pour la connexion
mysql- pour MySQLpgsql- pour PostgreSQLdblib- pour Microsoft SQL Serveroci- pour Oracle
DATABASE_HOSTet DATABASE_HOST_SECONDARY est le nom d'hôte ou l'adresse IP pour se connecter au premier et au deuxième serveur.
Si les bases sont déployées localement pour localhost:
Pour les utilisateurs de macOS et Windows : utilisez host.docker.internalplutôt localhost, car le script exécuté à l'intérieur du conteneur doit se connecter à la machine hôte.
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:

( ).