README.md

# ExDokku

Documentation can be found at [https://hexdocs.pm/ex_dokku](https://hexdocs.pm/ex_dokku).

This library assumes that you are:

- Deploying with Dokku
- Using Phoenix
- Using Ecto and Postgres
- Using a Digital Ocean style Dokku server setup

I am testing this setup on Manjaro Linux.

## Installation

ExDokku can be installed by adding `ex_dokku` to your list of dependencies in `mix.exs`:

```elixir
def deps do
  [
    {:ex_dokku, "~> 0.1.1", only: :dev}
  ]
end
```

Add your configuration to `config/dev.exs`

```elixir
config :ex_dokku,
  app: :your_app,
  repo: YourApp.Repo,
  postgres_username: "postgres",
  backup_directory: "/home/user/dbbackup/"
```

Make sure that your server is added to your git remote, as this tool pulls the remote info from git.

```bash
git remote add dokku dokku@123.456.789.123:yourapp
```

Add dump files to your .gitignore so you dont push private data to GitHub.

```bash
*.dump
```

## Usage

### mix dokku.save

Saves your development database to your app root directory as `latest.dump`.

### mix dokku.load

Loads the `latest.dump` from the app root directory as your development database.

### mix dokku.pull

Downloads your production database to your app root directory as `latest.dump` and loads it into your development database. Useful for troubleshooting production issues.

### mix dokku.backup

Downloads your production database to the path set in your config with the name of your app and the date. Re-downloading the file again will replace the previously downloaded file.

### mix dokku.reset_prod

**This is a dangerous command**

Unlinks, destroys, recreates, and then relinks your production database. Confirms beforehand. Make sure you back up your database before issuing this command!

### mix dokku.restore_prod

**This is a dangerous command**

Unlinks, destroys, recreates, relinks and then restores your production database from a selected backup on your local machine. Confirms beforehand. Make sure you back up your database before issuing this command!