PostgreSQL on Docker
Connect several versions of Postgres
Sometimes you might need to have different versions of PostgreSQL running on your laptop due to different customer infrastructures. Recently I tried to restore a pg_dump of 9.5 into a 9.3 that’s currently on my development environment and errors started popping up on my screen.
After you have docker running on your local, just take it for a spin:
# First thing to do is run as root_> sudo su
# List all running containers
_> docker ps # use (-a) for all containers
# Search containers
_> docker search postgres
# Pull a image into your local
_> docker pull postgres
# Lets start a container running PG 9.5 on port 54321
_> docker run --name pg95 -p 54321:5432 -d postgres:9.5
# Name of the container will be pg95
# Port 5432 will be tunneled to host 54321
# -d means that it will run on daemon mode
# Try now doing _> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
53819ef289f4 postgres:9.5 "/docker-entrypoint. 14 hours ago Up 7 seconds 0.0.0.0:54321->5432/tcp pg95
# Connect using command line tool :psql
_> psql -h localhost -p 54321 -U postgres
postgres=# select version();
version
------------------------------------------------------------------------------------------
PostgreSQL 9.5.3 on x86_64-pc-linux-gnu, compiled by gcc (Debian 4.9.2-10) 4.9.2, 64-bit
(1 row)
Now you can use the usual command line tools like pg_dump, pg_restore, psql, createdb, dropdb. Just need to add -h localhost and -p 54321.
# You will need some user for odoo else server will not allow running with postgres user
_> createuser -h localhost -p 54321 -U postgres odoo
_> dropdb -h localhost -p 54321 -U postgres database_name
_> createdb -h localhost -p 54321 -U postgres -O odoo database_name
_> pg_restore -h localhost -p 54321 -U postgres -O -d database_name ~/db/file.dump
Now, to connect Odoo to your development environment it's quite easy, just add/change following in the conf file:
db_user = odoo
db_port = 54321
db_host = localhost