Run PostgreSQL on Docker
Host and Containers
- Host: Ubuntu 14.04
-
Add <username> to docker group so sudo is not required to run docker command
sudo usermod -a -G docker username
-
Create two directories below. They will be mounted to containers to make DB and development files persist outside the containers
/opt/db/ws
/opt/db/postgresql/data
- Container: postgresql : https://hub.docker.com/_/postgres/
- This image includes
EXPOSE 5432
(the postgres port), so standard container linking will make it automatically available to the linked containers. The default postgres
user and database are created in the entry point with initdb
.
- The default data directory for PostgreSQL is /var/lib/postgresql/data
Run PostgreSQL Containers for Server and Client
-
ssh <host>
-
docker run --name pgs-server -v /opt/db/ws:/opt/db/ws -v /opt/db/postgresql/data:/var/lib/postgresql/data -e POSTGRES_PASSWORD=postgres -d postgres
run
start a new container using the requested image
--name pgs-server
Set container name to pgs-server.
-v /opt/db/postgresql/data:/var/lib/postgresql/data
-v /opt/db/ws:/opt/db/ws
Mount host directory /opt/db/postgresql as /var/lib/postgresql on the container so DB files persist on the hard disk
Mount host directory /opt/db/ws as /opt/db/ws to be used for development.
-e POSTGRES_PASSWORD=pgsdev
Set up the POSTGRES_PASSWORD
environment variable, which sets the master PostgreSQL password
-d
Run the container in the background (daemon mode). It will stay alive until it is removed
postgres
Runs postgres docker image
- Optional: Start a bash shell on the pgs-server container for miscellaneous tasks
docker exec -it pgs-server bash
- Start a PostgreSQL client container
docker run --name pgs-client -v /opt/db/ws:/opt/db/ws -it --rm --link pgs-server:postgres postgres psql -h postgres -U postgres
run
Start a new container using the requested image
--name pgs-client
Set container name to pgs-client. If this option is not provided, docker will assign a random name.
-v /opt/db/ws:/opt/db/ws
Mount host directory /opt/db/ws as /opt/db/ws to be used for development.
-it
Run the container in interactive mode
--rm
Automatically cleanup the container after exit to avoid zombie containers
-link pgs-server:postgres
connects to the pgs-server container from the pgs-cleint container
postgres
Use postgres Docker image
psql -h postgres -U postgres
at the end tells Docker what command to execute when the container starts. In this case, start the interactive postgres terminal
- Optional. Start a bash shell on the 2nd container for miscellaneous tasks
$docker exec -it pgs-client bash
thanks for the guide
ReplyDelete