Pour votre information, pour obtenir un shell psql en cours d’exécution du serveur de base de données Postgres de Discourse en cours d’exécution, vous pouvez exécuter docker exec --user postgres -it app psql -d discourse. Ainsi, pour obtenir un dump complet, vous pouvez exécuter (notez que j’omette l’option -t ici car elle n’est pas nécessaire dans ce cas) :
docker exec --user postgres -i app pg_dump -Fc -d discourse > discourse.sql.pgcustom
Vous devriez maintenant pouvoir restaurer cela dans une instance Postgres conteneurisée (docker pull postgres:10.12) et la connecter à Hasura pour le développement (ce n’est vraiment utile qu’au niveau lecture seule car il s’agit désormais d’une base de données distincte).
Pour faire cela au niveau de la production, je configurerais l’environnement fourni par Discourse et j’hébergerais votre base de données dans un service comme Amazon RDS. Vous aurez alors un accès facile en lecture et écriture à cette base de données.
Pour restaurer le dump ci-dessus localement :
- Créez un réseau Docker :
docker network create discourse-dev-net
- Dans le premier terminal :
docker run --rm -it -p 2345:5432 -e POSTGRES_DB=discourse -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres --name=discourse-dev-pg --network=discourse-dev-net postgres:10.12
(Si vous souhaitez qu’il s’exécute en arrière-plan, je pense que vous pouvez simplement remplacer -it par -d ; -p 2345:5432 est optionnel mais pratique si vous souhaitez vous connecter à Postgres depuis votre hôte)
- Dans un autre terminal, créez l’utilisateur discourse dans Postgres (nécessaire pour le dump) :
docker run --rm -it -v /path/to/discourse.sql.pgcustom:/discourse.sql.pgcustom:ro -e PGPASSWORD=postgres --network=discourse-dev-net postgres:10.12 createuser -h discourse-dev-pg -U postgres -P discourse
(Vous saisissez ensuite le mot de passe deux fois à l’invite ; j’ai utilisé discourse comme mot de passe)
- Effectuez la restauration :
docker run --rm -i -v /home/dean/Downloads/discourse.sql.pgcustom:/discourse.sql.pgcustom:ro -e PGPASSWORD=postgres --network=discourse-dev-net postgres:10.12 pg_restore -h discourse-dev-pg -U postgres -d discourse /discourse.sql.pgcustom
- Pour connecter Hasura à ce dernier :
docker run --rm -it --network=discourse-dev-net -p 1234:1234 -e HASURA_GRAPHQL_ENABLE_CONSOLE=true -e HASURA_GRAPHQL_DATABASE_URL=postgres://postgres:postgres@discourse-dev-pg:5432/discourse hasura/graphql-engine:v1.2.1 graphql-engine serve --server-port=1234
(Vous pouvez maintenant accéder à http://localhost:1234)