1

Hier ist meine dockerfile und hier ist meine docker-compose file. Als ich docker-compose run web rake db:migrate lief habe ich diesen errpg_dump Problem in Docker

rake aborted! 
failed to execute: 
pg_dump -s -x -O -f /usr/src/app/db/structure.sql --schema=public --schema=partitioning docker_rails_dev 

Please check the output above for any errors and make sure that `pg_dump` is installed in your PATH and has proper permissions. 

/usr/local/bundle/gems/activerecord-4.2.7.1/lib/active_record/tasks/postgresql_database_tasks.rb:90:in `run_cmd' 
/usr/local/bundle/gems/activerecord-4.2.7.1/lib/active_record/tasks/postgresql_database_tasks.rb:55:in `structure_dump' 
/usr/local/bundle/gems/activerecord-4.2.7.1/lib/active_record/tasks/database_tasks.rb:183:in `structure_dump' 
/usr/local/bundle/gems/activerecord-4.2.7.1/lib/active_record/railties/databases.rake:279:in `block (3 levels) in <top (required)>' 
/usr/local/bundle/gems/activerecord-4.2.7.1/lib/active_record/railties/databases.rake:53:in `block (2 levels) in <top (required)>' 
/usr/local/bundle/gems/activerecord-4.2.7.1/lib/active_record/railties/databases.rake:45:in `block (2 levels) in <top (required)>' 
Tasks: TOP => db:structure:dump 
(See full trace by running task with --trace) 

so dass ich in Postgres Behälter eingegeben und lief pg_dump und bekam diese err

pg_dump: [archiver (db)] connection to database "root" failed: could not connect to server: No such file or directory 
    Is the server running locally and accepting 
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"? 

aber pg_dump --version Laufen gibt mir die Versionsnummer von Postgres.

eine Idee, warum das passiert?

+2

'pg_dump --version' gibt Ihnen die Version von pg_dump :-) Wenn Sie in contai verbinden Wenn Sie als root ausführen, wird der Befehl 'pg_dump' in diesem Fall versucht, als Benutzer" root "mit der Datenbank" root "zu verbinden. Sie müssen Parameter wie -U und -d hinzufügen - überprüfen Sie in der Dokumentation. Überprüfen Sie außerdem die Datei pg_hba.conf - sie enthält "Berechtigungen" für Benutzer, die eine Verbindung herstellen. – JosMac

+0

gibt es eine Möglichkeit, das oben genannte Problem zu beheben? – Raaz

Antwort

1

Die Verwendung von run Befehl ist nicht der beste Weg, da Sie Postgres-Server zum Laufen brauchen. Versuchen Sie mit exec, denken Sie daran, dass die Verwendung -f als Argument in pg_dump eine Datei innerhalb der laufenden Instanz erstellen wird, so dass Sie möglicherweise Datei mit > schreiben, Ausgabe umleiten und den Dump außerhalb des Containers erstellen. In meinem Fall habe ich so etwas wie:

docker-compose -f $PROJECT_PATH/docker-compose-$ENV.yml exec postgres pg_dump -U $DBUSER -Z 9 $DOCKERSERVICE > backups/db/postgres-`date +"%m%d%y%H%M%S".sql.gz` 

Wo $DOCKERSERVICE in der Regel postgres

ist für Sie es sein könnte, falls etwas wie:

docker-compose exec web rake db:migrate

Und ein better reference für docker-compose exec

Verwandte Themen