mirror of
https://github.com/wassname/docker-postgresql.git
synced 2026-06-28 23:40:33 +08:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 197d53e0a1 | |||
| 88208071b0 | |||
| 38dc995884 |
@@ -1,5 +1,8 @@
|
||||
# Changelog
|
||||
|
||||
**9.4-11**
|
||||
- added `PG_PASSWORD` variable to specify password for `postgres` user
|
||||
|
||||
**9.4-9**
|
||||
- complete rewrite
|
||||
- `PSQL_TRUST_LOCALNET` config parameter renamed to `PG_TRUST_LOCALNET`
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
FROM sameersbn/ubuntu:14.04.20151117
|
||||
FROM sameersbn/ubuntu:14.04.20151213
|
||||
MAINTAINER sameer@damagehead.com
|
||||
|
||||
ENV PG_APP_HOME="/etc/docker-postgresql"\
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[](https://circleci.com/gh/sameersbn/docker-postgresql) [](https://quay.io/repository/sameersbn/postgresql) [](https://imagelayers.io/?images=sameersbn/postgresql:latest 'Get your own badge on imagelayers.io')
|
||||
|
||||
# sameersbn/postgresql:9.4-10
|
||||
# sameersbn/postgresql:9.4-11
|
||||
|
||||
- [Introduction](#introduction)
|
||||
- [Contributing](#contributing)
|
||||
@@ -10,6 +10,7 @@
|
||||
- [Quickstart](#quickstart)
|
||||
- [Persistence](#persistence)
|
||||
- [Trusting local connections](#trusting-local-connections)
|
||||
- [Setting `postgres` user password](#setting-postgres-user-password)
|
||||
- [Creating database user](#creating-database-user)
|
||||
- [Creating databases](#creating-databases)
|
||||
- [Enabling unaccent extension](#enabling-unaccent-extension)
|
||||
@@ -60,7 +61,7 @@ Automated builds of the image are available on [Dockerhub](https://hub.docker.co
|
||||
> **Note**: Builds are also available on [Quay.io](https://quay.io/repository/sameersbn/postgresql)
|
||||
|
||||
```bash
|
||||
docker pull sameersbn/postgresql:9.4-10
|
||||
docker pull sameersbn/postgresql:9.4-11
|
||||
```
|
||||
|
||||
Alternatively you can build the image yourself.
|
||||
@@ -77,7 +78,7 @@ Start PostgreSQL using:
|
||||
docker run --name postgresql -itd --restart always \
|
||||
--publish 5432:5432 \
|
||||
--volume /srv/docker/postgresql:/var/lib/postgresql \
|
||||
sameersbn/postgresql:9.4-10
|
||||
sameersbn/postgresql:9.4-11
|
||||
```
|
||||
|
||||
Login to the PostgreSQL server using:
|
||||
@@ -108,13 +109,29 @@ By default connections to the PostgreSQL server need to authenticated using a pa
|
||||
```bash
|
||||
docker run --name postgresql -itd --restart always \
|
||||
--env 'PG_TRUST_LOCALNET=true' \
|
||||
sameersbn/postgresql:9.4-10
|
||||
sameersbn/postgresql:9.4-11
|
||||
```
|
||||
|
||||
> **Note**
|
||||
>
|
||||
> The local network here is network to which the container is attached. This has different meanings depending on the `--net` parameter specified while starting the container. In the default configuration, this parameter would trust connections from other containers on the `docker0` bridge.
|
||||
|
||||
## Setting `postgres` user password
|
||||
|
||||
By default the `postgres` user is not assigned a password and as a result you can only login to the PostgreSQL server locally. If you wish to login remotely to the PostgreSQL server as the `postgres` user, you will need to assign a password for the user using the `PG_PASSWORD` variable.
|
||||
|
||||
```bash
|
||||
docker run --name postgresql -itd --restart always \
|
||||
--env 'PG_PASSWORD=passw0rd' \
|
||||
sameersbn/postgresql:9.4-11
|
||||
```
|
||||
|
||||
|
||||
> **Note**
|
||||
>
|
||||
> - When [persistence](#persistence) is in use, `PG_PASSWORD` is effective on the first run.
|
||||
> - This feature is only available in the `latest` and versions > `9.4-10`
|
||||
|
||||
## Creating database user
|
||||
|
||||
A new PostgreSQL database user can be created by specifying the `DB_USER` and `DB_PASS` variables while starting the container.
|
||||
@@ -122,7 +139,7 @@ A new PostgreSQL database user can be created by specifying the `DB_USER` and `D
|
||||
```bash
|
||||
docker run --name postgresql -itd --restart always \
|
||||
--env 'DB_USER=dbuser' --env 'DB_PASS=dbuserpass' \
|
||||
sameersbn/postgresql:9.4-10
|
||||
sameersbn/postgresql:9.4-11
|
||||
```
|
||||
|
||||
> **Notes**
|
||||
@@ -139,7 +156,7 @@ A new PostgreSQL database can be created by specifying the `DB_NAME` variable wh
|
||||
```bash
|
||||
docker run --name postgresql -itd --restart always \
|
||||
--env 'DB_NAME=dbname' \
|
||||
sameersbn/postgresql:9.4-10
|
||||
sameersbn/postgresql:9.4-11
|
||||
```
|
||||
|
||||
Additionally, more than one database can be created by specifying a comma separated list of database names in `DB_NAME`. For example, the following command creates two new databases named `dbname1` and `dbname2`.
|
||||
@@ -149,7 +166,7 @@ Additionally, more than one database can be created by specifying a comma separa
|
||||
```bash
|
||||
docker run --name postgresql -itd --restart always \
|
||||
--env 'DB_NAME=dbname1,dbname2' \
|
||||
sameersbn/postgresql:9.4-10
|
||||
sameersbn/postgresql:9.4-11
|
||||
```
|
||||
|
||||
# Enabling unaccent extension
|
||||
@@ -161,7 +178,7 @@ You can enable the unaccent extension on database(s) by specifying `DB_UNACCENT=
|
||||
```bash
|
||||
docker run --name postgresql -itd \
|
||||
--env 'DB_NAME=dbname' --env 'DB_UNACCENT=true' \
|
||||
sameersbn/postgresql:9.4-10
|
||||
sameersbn/postgresql:9.4-11
|
||||
```
|
||||
|
||||
*By default the unaccent extension is disabled*
|
||||
@@ -174,7 +191,7 @@ If the `DB_USER` and `DB_PASS` variables are specified along with the `DB_NAME`
|
||||
docker run --name postgresql -itd --restart always \
|
||||
--env 'DB_USER=dbuser' --env 'DB_PASS=dbuserpass' \
|
||||
--env 'DB_NAME=dbname1,dbname2' \
|
||||
sameersbn/postgresql:9.4-10
|
||||
sameersbn/postgresql:9.4-11
|
||||
```
|
||||
|
||||
In the above example `dbuser` with be granted access to both the `dbname1` and `dbname2` databases.
|
||||
@@ -186,7 +203,7 @@ Similar to the creation of a database user, a new PostgreSQL replication user ca
|
||||
```bash
|
||||
docker run --name postgresql -itd --restart always \
|
||||
--env 'REPLICATION_USER=repluser' --env 'REPLICATION_PASS=repluserpass' \
|
||||
sameersbn/postgresql:9.4-10
|
||||
sameersbn/postgresql:9.4-11
|
||||
```
|
||||
|
||||
> **Notes**
|
||||
@@ -208,7 +225,7 @@ Begin by creating the master node of our cluster:
|
||||
docker run --name postgresql-master -itd --restart always \
|
||||
--env 'DB_USER=dbuser' --env 'DB_PASS=dbuserpass' --env 'DB_NAME=dbname' \
|
||||
--env 'REPLICATION_USER=repluser' --env 'REPLICATION_PASS=repluserpass' \
|
||||
sameersbn/postgresql:9.4-10
|
||||
sameersbn/postgresql:9.4-11
|
||||
```
|
||||
|
||||
Notice that no additional arguments are specified while starting the master node of the cluster.
|
||||
@@ -223,7 +240,7 @@ docker run --name postgresql-slave01 -itd --restart always \
|
||||
--env 'REPLICATION_MODE=slave' --env 'REPLICATION_SSLMODE=prefer' \
|
||||
--env 'REPLICATION_HOST=master' --env 'REPLICATION_PORT=5432' \
|
||||
--env 'REPLICATION_USER=repluser' --env 'REPLICATION_PASS=repluserpass' \
|
||||
sameersbn/postgresql:9.4-10
|
||||
sameersbn/postgresql:9.4-11
|
||||
```
|
||||
|
||||
*In the above command, we used docker links so that we can address the master node using the `master` alias in `REPLICATION_HOST`.*
|
||||
@@ -255,7 +272,7 @@ docker run --name postgresql-snapshot -itd --restart always \
|
||||
--env 'REPLICATION_MODE=snapshot' --env 'REPLICATION_SSLMODE=prefer' \
|
||||
--env 'REPLICATION_HOST=master' --env 'REPLICATION_PORT=5432' \
|
||||
--env 'REPLICATION_USER=repluser' --env 'REPLICATION_PASS=repluserpass' \
|
||||
sameersbn/postgresql:9.4-10
|
||||
sameersbn/postgresql:9.4-11
|
||||
```
|
||||
|
||||
The difference between a slave and a snapshot is that a slave is read-only and updated whenever the master data is updated (streaming replication), while a snapshot is read-write and is not updated after the initial snapshot of the data from the master.
|
||||
@@ -277,7 +294,7 @@ docker run --name postgresql-backup -it --rm \
|
||||
--env 'REPLICATION_HOST=master' --env 'REPLICATION_PORT=5432' \
|
||||
--env 'REPLICATION_USER=repluser' --env 'REPLICATION_PASS=repluserpass' \
|
||||
--volume /srv/docker/backups/postgresql.$(date +%Y%m%d%H$M%S):/var/lib/postgresql \
|
||||
sameersbn/postgresql:9.4-10
|
||||
sameersbn/postgresql:9.4-11
|
||||
```
|
||||
|
||||
Once the backup is generated, the container will exit and the backup of the master data will be available at `/srv/docker/backups/postgresql.XXXXXXXXXXXX/`. Restoring the backup involves starting a container with the data in `/srv/docker/backups/postgresql.XXXXXXXXXXXX`.
|
||||
@@ -288,7 +305,7 @@ You can customize the launch command of PostgreSQL server by specifying argument
|
||||
|
||||
```bash
|
||||
docker run --name postgresql -itd --restart always \
|
||||
sameersbn/postgresql:9.4-10 -c log_connections=on
|
||||
sameersbn/postgresql:9.4-11 -c log_connections=on
|
||||
```
|
||||
|
||||
Please refer to the documentation of [postgres](http://www.postgresql.org/docs/9.4/static/app-postgres.html) for the complete list of available options.
|
||||
@@ -299,7 +316,7 @@ By default the PostgreSQL server logs are sent to the standard output. Using the
|
||||
|
||||
```bash
|
||||
docker run --name postgresql -itd --restart always \
|
||||
sameersbn/postgresql:9.4-10 -c logging_collector=on
|
||||
sameersbn/postgresql:9.4-11 -c logging_collector=on
|
||||
```
|
||||
|
||||
To access the PostgreSQL logs you can use `docker exec`. For example:
|
||||
@@ -321,7 +338,7 @@ For example, if you want to assign the `postgres` user of the container the UID
|
||||
```bash
|
||||
docker run --name postgresql -itd --restart always \
|
||||
--env 'USERMAP_UID=999' --env 'USERMAP_GID=999' \
|
||||
sameersbn/postgresql:9.4-10
|
||||
sameersbn/postgresql:9.4-11
|
||||
```
|
||||
|
||||
# Maintenance
|
||||
@@ -333,7 +350,7 @@ To upgrade to newer releases:
|
||||
1. Download the updated Docker image:
|
||||
|
||||
```bash
|
||||
docker pull sameersbn/postgresql:9.4-10
|
||||
docker pull sameersbn/postgresql:9.4-11
|
||||
```
|
||||
|
||||
2. Stop the currently running image:
|
||||
@@ -353,7 +370,7 @@ To upgrade to newer releases:
|
||||
```bash
|
||||
docker run --name postgresql -itd \
|
||||
[OPTIONS] \
|
||||
sameersbn/postgresql:9.4-10
|
||||
sameersbn/postgresql:9.4-11
|
||||
```
|
||||
|
||||
## Shell Access
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
PostgreSQL:
|
||||
restart: always
|
||||
image: sameersbn/postgresql:9.4-10
|
||||
image: sameersbn/postgresql:9.4-11
|
||||
ports:
|
||||
- "5432:5432"
|
||||
environment:
|
||||
|
||||
+5
-1
@@ -203,8 +203,12 @@ initialize_database() {
|
||||
mv ${PG_HOME}/${PG_OLD_VERSION}.migrating ${PG_HOME}/${PG_OLD_VERSION}
|
||||
fi
|
||||
|
||||
if [[ -n $PG_PASSWORD ]]; then
|
||||
echo "${PG_PASSWORD}" > /tmp/pwfile
|
||||
fi
|
||||
|
||||
exec_as_postgres ${PG_BINDIR}/initdb --pgdata=${PG_DATADIR} \
|
||||
--username=${PG_USER} --encoding=unicode --auth=trust >/dev/null
|
||||
--username=${PG_USER} --encoding=unicode --auth=trust ${PG_PASSWORD:+--pwfile=/tmp/pwfile} >/dev/null
|
||||
|
||||
if [[ -n ${PG_OLD_VERSION} ]]; then
|
||||
PG_OLD_BINDIR=/usr/lib/postgresql/${PG_OLD_VERSION}/bin
|
||||
|
||||
Reference in New Issue
Block a user