Skip to content

rodrigogirao/pgadmin4-docker

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pgAdmin 4

This is a simple Docker image for running pgAdmin 4 in a container. The default configuration is not intended for production use (it runs in "desktop mode", so authentication is disabled).

This image uses an unprivileged user, and uses port 5050 instead of 80. To access the web-interface on port 80 instead of 5050, you can map the port using -p 80:5050.

Example use

Quick start

To see this image in action, run the following command;

$ docker run --rm -p 5050:5050 thajeztah/pgadmin4

This starts a one-off container in non-detached mode, and container logs are printed in your terminal. After the container has finished starting, visit http://[your-docker-host]:5050 in your browser to try pgAdmin 4.

To exit and remove the container, press CTRL+C in your terminal.

Practical example

This example uses a custom network, and runs a PostgreSQL container.

# create a custom network for easier connecting
$ docker network create pg

# start a postgres container
$ docker run -d -e POSTGRES_PASSWORD=password --net pg --name postgres postgres

# start pgAdmin container
$ docker run -d -p 5050:5050 --name pgadmin --net pg thajeztah/pgadmin4

Now visit http://[your-docker-host]:5050 in your browser. You can add the postgres database (hostname is postgres, password is password) to test if everything is working.

screenshot

Connect to a host running PostgreSQL

To connect pgadmin4 with a database running in a host you have to modify two files in the host, pg-hba.conf and postgresql.conf

Open the pg-hba.conf

#change 9.x to your PostgreSQL version
$ sudo vim /etc/postgresql/9.x/main/pg_hba.conf

And add the line

host    all             all             0.0.0.0/0               trust

0.0.0.0/0 means any host is allowed to connect, that can be replaced by the your container ip address

Open the postgresql.conf changing 9.x to your postgres version.

#change 9.x to your PostgreSQL version
$ sudo vim /etc/postgresql/9.x/main/postgresql.conf

And add the line

listen_addresses = '*'

'*' means your host is listening all ip address. Again, you can replace by your container ip address

Now just discover your local ip using ifconfig, and put it in the hostname/address field, when create a new server in pgadmin4, to connect the database host.

Persistent data

Persistent data is stored in a volume, located at /pgadmin/. This allows you to upgrade the container to a new version without losing configuration.

The following directories can be found inside the volume;

  • /pgadmin/config/pgadmin4.db - SQLite configuration database
  • /pgadmin/storage/ - other storage

You can override the storage location using the PG_ADMIN_DATA_DIR environment variable

Unprivileged user

pgAdmin runs as an unprivileged user (pgadmin) with uid:gid 1000:50. The uid:gid is selected for compatibility with Docker Toolbox, and allows you to bind-mount a local directory inside the container for persistent storage

For example, to bind-mount the /Users/me/pgadmin directory as storage directory;

$ docker run -d -p 5050:5050 -v /Users/me/pgadmin:/pgadmin thajeztah/pgadmin4

Run the image with a read-only filesystem

This image can be run with a read-only filesystem. To do so, specify the --read-only flag when starting the container.

$ docker run -d -p 5050:5050 --name pgadmin --read-only thajeztah/pgadmin4

Runtime configuration

This image can be configured at runtime, by setting environment variables;

  • PG_ADMIN_DATA_DIR directory to use for storing data (defaults to /pgadmin/)
  • PG_ADMIN_PORT port to listen on (defaults to 5050)
  • DEBUG enable debug mode (detaults to False)

More information on pgAdmin 4 development can be found here;

Reporting issues and feature requests

Issues and feature requests can be reported on GitHub; https://github.com/thaJeztah/pgadmin4-docker

About

Automated build for pgAdmin4 Docker image

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 100.0%