Public | Automated Build

Last pushed: 2 years ago
Short Description
Docker image to run PostgreSQL by Azuki -
Full Description


Base docker image to run a PostgreSQL database server in azk

Postgres versions (tags)

- latest, 9, 9.5, 9.5.0
- 9.4, 9.4.5
- 9.3, 9.3.10

Image content use

Usage with azk

Example of using this image with azk:

 * Documentation:

// Adds the systems that shape your system
  postgres: {
    // More info about postgres image:
    image: {"docker": "azukiapp/postgres:9.4"},
    shell: "/bin/bash",
    wait: {"retry": 25, "timeout": 1000},
    mounts: {
      '/var/lib/postgresql/data': persistent("#{}-data"),
    ports: {
      // exports global variables: "#{}"
      data: "5432/tcp",
    envs: {
      // set instances variables
      POSTGRES_USER: "azk",
      POSTGRES_PASS: "azk",
      POSTGRES_DB  : "#{manifest.dir}",
    export_envs: {
      // check this gist to configure your database
      // Ruby eg in:
      DATABASE_URL: "postgres://#{envs.POSTGRES_USER}:#{envs.POSTGRES_PASS}@#{}:#{}/#{envs.POSTGRES_DB}",
      // Exlir eg in:
      // DATABASE_URL: "ecto+postgres://#{envs.POSTGRES_USER}:#{envs.POSTGRES_PASS}@#{}:#{}/#{envs.POSTGRES_DB}",
      // or use splited envs:
      // POSTGRES_USER: "#{envs.POSTGRES_USER}",
      // POSTGRES_PASS: "#{envs.POSTGRES_PASS}",
      // POSTGRES_HOST: "#{}",
      // POSTGRES_PORT: "#{}",
      // POSTGRES_DB  : "#{envs.POSTGRES_DB}",

Do not forget to add postgres as a dependency of your application:


  'my-app': {
    // Dependent systems
    depends: ["postgres"],
    /* ... */
  'postgres': { /* ... */ }

Usage with docker

To create the image azukiapp/postgres, execute the following command on the docker-postgres folder:

$ docker build -t azukiapp/postgres:9.4 ./9.4

To run the image and bind to port 5432:

$ docker run -d -p 5432:5432 azukiapp/postgres


Obs: Very slow process

$ make test


# with azk
$ azk logs postgres

# with docker
$ docker logs <CONTAINER_ID>

Environment variables

POSTGRES_USER: Set a specific username for the admin account. (default 'azk')

POSTGRES_PASS: Set a specific password for the admin account. (default 'azk')

POSTGRES_DB: Set a specific database name

Clean DB data

to clean postgres data, run:

# this makes sure that postgres is stopped
$ azk stop postgres
# remove all files in $PGDATA (`/*` is required)
$ azk shell postgres -- rm -rf "\$PGDATA/*"

Migrating an existing PostgreSQL Server

In order to migrate your current PostgreSQL server, perform the following commands from your current server:

Export dump

$ pg_dump --host <host> --port <port> --username <name> --password=<password> --dbname <database name> -O -x > dbexport.sql

The -O -x flags export the database without ownership information. If you don't do this you might get an error on import.

Import from dump (Manual)

$ azk start postgres
azk: ↑ starting `postgres` system, 1 new instances...
azk: ✓ checking `azukiapp/postgres:9.4` image...
azk: ◴ waiting for `postgres` system to start, trying connection to port data/tcp...

│   │ System   │ Instances │ Hostname/url │ Instances-Ports │ Provisioned  │
│ ↑ │ postgres │ 1         │   │ 1-data:32768    │ 2 months ago │

$ azk shell postgres
$ psql --host --port 32768 --username ${POSTGRES_USER} --password=${POSTGRES_PASS} --dbname=${POSTGRES_DB} < dbexport.sql

NOTE: remember to replace the port number through which it is running (as in the table above or using the azk status)

Auto import using Azkfile

you can use the entrypoint of the image of postgres to do the loading of the dump automatically.

  1. put all dump files in ./data-dump/
  2. Add the mount:
    mounts: {
      '/var/lib/postgresql/data'    : persistent("#{}-data"),
      '/docker-entrypoint-initdb.d/': path("./data-dump/"),
  • valid extendions: .sh, .sql and .sql.gz;

NOTE: the charging process is automated, as well as the creation of the database is done only the first time.
To clean DB data see section Clean DB data


Azuki Dockerfiles distributed under the Apache License.

Docker Pull Command
Source Repository