How do I make my Django app in Dokku use Postgres dump as database?

May 6, 2014 3.3k views
Hi, I've recently uploaded my Django app to a Dokku droplet, and I want to know how I can make it to work with a dump of a database I have. I've tried restoring to Postgres my dump but it's not working, but, even if I where to restore data from dump, I still don't know how can I make my app to use that database. Could you tell me (baby steps) how can I make my Django app work with a Postgres database in Dokku droplet? Thanks a lot!
11 Answers
Are you using the PostgreSQL plugin for Dokku? See:

https://github.com/Kloadut/dokku-pg-plugin

If so, you should be able to import a dump with:


dokku postgresql:restore app_name < app.sql


The key thing to remember is that Dokku runs the app from inside of a Docker container. So the database dump needs to be restored to the Postgres instance inside the container, not on the host system.
When I do it I find it answers with:

Unknown (or too old) PostgreSQL container

I'm not sure if I'm using the PostgreSQL plugin for Dokku, when I started the droplet, I selected the Dokku option (instead of Linux distribution, I selected it from application option), so I'm not sure where it comes from.

Yes, I'm using the PostgreSQL plugin for Dokku. Now I'm following https://github.com/Kloadut/dokku-pg-plugin tutorial
@Sascuash:

You'd need to install the plugin yourself. Check out that GitHub link for more information, but basically what you need to do is:


cd /var/lib/dokku/plugins/
git clone https://github.com/Kloadut/dokku-pg-plugin.git postgresql
dokku plugins-install


Then to set it up for the first time, you can run:


dokku postgresql:create appname
dokku postgresql:restore appname < dump_file.sql


If you'd rather just access the docker container the app is running directly, you can get a interactive shell with:


docker run -i -t dokku/appname /bin/bash
I have a myApp.dump, How could I make it so it becomes a .sql??

When I try I get:

invalid command \?4???b@?????:??I0j_8?s?A?x??r7??ء4?p?m!???c???.?(^???4?~_?hslSA?QA?[4?[ir??O
???W?Sq7?uFО?_
invalid command \?/??(?1?Y=??S?+?٠???3?.M?!??Ku??H_?H߻T??>9
invalid command \invalid command \|?A??c?e?
:4V??
invalid command \????uj?f??K?-o??VqY??z;M???~?*7g,?G??????
ERROR: invalid byte sequence for encoding "UTF8": 0xea8e51

-----> myApp database restored
root@******:~/myApp/myApp#
That seems like you are getting the import commands correct, but you are now hitting another error with charterer encoding. What's the encoding of your database dump? Run:


file youfile.sql


When I run the command I get

PostgreSQL custom database dump - v1.12-0
The dump was created from Heroku where original app exists (I want to migrate)
This answer over on StackExchange seems relevant:

http://stackoverflow.com/a/22763027

@Andrew SB

It's been a while, but I wanted to thank you for all your help and effort answering my question.

Thanks
Have another answer? Share your knowledge.