mirror of
https://github.com/wassname/docker-postgresql.git
synced 2026-07-01 16:53:02 +08:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4d92cfc63e | |||
| 6d98301424 | |||
| 4fa09528b6 | |||
| a443dfb2d9 | |||
| 57f7f6597c | |||
| fbc06c1604 |
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
FROM quay.io/sameersbn/ubuntu:14.04.20151013
|
FROM quay.io/sameersbn/ubuntu:14.04.20151023
|
||||||
MAINTAINER sameer@damagehead.com
|
MAINTAINER sameer@damagehead.com
|
||||||
|
|
||||||
ENV PG_VERSION=9.4 \
|
ENV PG_VERSION=9.4 \
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ In your issue report please make sure you provide the following information:
|
|||||||
Automated builds of the image are available on [Quay.io](https://quay.io/repository/sameersbn/postgresql) and is the recommended method of installation.
|
Automated builds of the image are available on [Quay.io](https://quay.io/repository/sameersbn/postgresql) and is the recommended method of installation.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker pull quay.io/sameersbn/postgresql:9.4-6
|
docker pull quay.io/sameersbn/postgresql:9.4-7
|
||||||
```
|
```
|
||||||
|
|
||||||
Alternately you can build the image yourself.
|
Alternately you can build the image yourself.
|
||||||
@@ -76,7 +76,7 @@ docker build -t="$USER/postgresql" .
|
|||||||
Run the postgresql image
|
Run the postgresql image
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker run --name postgresql -d quay.io/sameersbn/postgresql:9.4-6
|
docker run --name postgresql -d quay.io/sameersbn/postgresql:9.4-7
|
||||||
```
|
```
|
||||||
|
|
||||||
The simplest way to login to the postgresql container as the administrative `postgres` user is to use the `docker exec` command to attach a new process to the running container and connect to the postgresql server over the unix socket.
|
The simplest way to login to the postgresql container as the administrative `postgres` user is to use the `docker exec` command to attach a new process to the running container and connect to the postgresql server over the unix socket.
|
||||||
@@ -100,7 +100,7 @@ The updated run command looks like this.
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker run --name postgresql -d \
|
docker run --name postgresql -d \
|
||||||
-v /opt/postgresql/data:/var/lib/postgresql quay.io/sameersbn/postgresql:9.4-6
|
-v /opt/postgresql/data:/var/lib/postgresql quay.io/sameersbn/postgresql:9.4-7
|
||||||
```
|
```
|
||||||
|
|
||||||
This will make sure that the data stored in the database is not lost when the image is stopped and started again.
|
This will make sure that the data stored in the database is not lost when the image is stopped and started again.
|
||||||
@@ -114,7 +114,7 @@ To create a new user you should specify the `DB_USER` and `DB_PASS` variables. T
|
|||||||
```bash
|
```bash
|
||||||
docker run --name postgresql -d \
|
docker run --name postgresql -d \
|
||||||
-e 'DB_USER=dbuser' -e 'DB_PASS=dbpass' \
|
-e 'DB_USER=dbuser' -e 'DB_PASS=dbpass' \
|
||||||
quay.io/sameersbn/postgresql:9.4-6
|
quay.io/sameersbn/postgresql:9.4-7
|
||||||
```
|
```
|
||||||
|
|
||||||
**NOTE**
|
**NOTE**
|
||||||
@@ -125,7 +125,7 @@ Similarly, you can also create a new database by specifying the database name in
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker run --name postgresql -d \
|
docker run --name postgresql -d \
|
||||||
-e 'DB_NAME=dbname' quay.io/sameersbn/postgresql:9.4-6
|
-e 'DB_NAME=dbname' quay.io/sameersbn/postgresql:9.4-7
|
||||||
```
|
```
|
||||||
|
|
||||||
You may also specify a comma separated list of database names in the `DB_NAME` variable. The following command creates two new databases named *dbname1* and *dbname2* (p.s. this feature is only available in releases greater than 9.1-1).
|
You may also specify a comma separated list of database names in the `DB_NAME` variable. The following command creates two new databases named *dbname1* and *dbname2* (p.s. this feature is only available in releases greater than 9.1-1).
|
||||||
@@ -133,7 +133,7 @@ You may also specify a comma separated list of database names in the `DB_NAME` v
|
|||||||
```bash
|
```bash
|
||||||
docker run --name postgresql -d \
|
docker run --name postgresql -d \
|
||||||
-e 'DB_NAME=dbname1,dbname2' \
|
-e 'DB_NAME=dbname1,dbname2' \
|
||||||
quay.io/sameersbn/postgresql:9.4-6
|
quay.io/sameersbn/postgresql:9.4-7
|
||||||
```
|
```
|
||||||
|
|
||||||
If the `DB_USER` and `DB_PASS` variables are also specified while creating the database, then the user is granted access to the database(s).
|
If the `DB_USER` and `DB_PASS` variables are also specified while creating the database, then the user is granted access to the database(s).
|
||||||
@@ -143,11 +143,13 @@ For example,
|
|||||||
```bash
|
```bash
|
||||||
docker run --name postgresql -d \
|
docker run --name postgresql -d \
|
||||||
-e 'DB_USER=dbuser' -e 'DB_PASS=dbpass' -e 'DB_NAME=dbname' \
|
-e 'DB_USER=dbuser' -e 'DB_PASS=dbpass' -e 'DB_NAME=dbname' \
|
||||||
quay.io/sameersbn/postgresql:9.4-6
|
quay.io/sameersbn/postgresql:9.4-7
|
||||||
```
|
```
|
||||||
|
|
||||||
will create a user *dbuser* with the password *dbpass*. It will also create a database named *dbname* and the *dbuser* user will have full access to the *dbname* database.
|
will create a user *dbuser* with the password *dbpass*. It will also create a database named *dbname* and the *dbuser* user will have full access to the *dbname* database.
|
||||||
|
|
||||||
|
The `DB_LOCALE` environment variable can be used to configure the locale used for database creation. Its default value is set to C.
|
||||||
|
|
||||||
The `PSQL_TRUST_LOCALNET` environment variable can be used to configure postgres to trust connections on the same network. This is handy for other containers to connect without authentication. To enable this behavior, set `PSQL_TRUST_LOCALNET` to `true`.
|
The `PSQL_TRUST_LOCALNET` environment variable can be used to configure postgres to trust connections on the same network. This is handy for other containers to connect without authentication. To enable this behavior, set `PSQL_TRUST_LOCALNET` to `true`.
|
||||||
|
|
||||||
For example,
|
For example,
|
||||||
@@ -155,7 +157,7 @@ For example,
|
|||||||
```bash
|
```bash
|
||||||
docker run --name postgresql -d \
|
docker run --name postgresql -d \
|
||||||
-e 'PSQL_TRUST_LOCALNET=true' \
|
-e 'PSQL_TRUST_LOCALNET=true' \
|
||||||
quay.io/sameersbn/postgresql:9.4-6
|
quay.io/sameersbn/postgresql:9.4-7
|
||||||
```
|
```
|
||||||
|
|
||||||
This has the effect of adding the following to the `pg_hba.conf` file:
|
This has the effect of adding the following to the `pg_hba.conf` file:
|
||||||
@@ -177,7 +179,7 @@ docker run --name='psql-master' -it --rm \
|
|||||||
-e 'PSQL_MODE=master' -e 'PSQL_TRUST_LOCALNET=true' \
|
-e 'PSQL_MODE=master' -e 'PSQL_TRUST_LOCALNET=true' \
|
||||||
-e 'REPLICATION_USER=replicator' -e 'REPLICATION_PASS=replicatorpass' \
|
-e 'REPLICATION_USER=replicator' -e 'REPLICATION_PASS=replicatorpass' \
|
||||||
-e 'DB_NAME=dbname' -e 'DB_USER=dbuser' -e 'DB_PASS=dbpass' \
|
-e 'DB_NAME=dbname' -e 'DB_USER=dbuser' -e 'DB_PASS=dbpass' \
|
||||||
quay.io/sameersbn/postgresql:9.4-6
|
quay.io/sameersbn/postgresql:9.4-7
|
||||||
```
|
```
|
||||||
|
|
||||||
Create a streaming replication instance
|
Create a streaming replication instance
|
||||||
@@ -188,7 +190,7 @@ docker run --name='psql-slave' -it --rm \
|
|||||||
-e 'PSQL_MODE=slave' -e 'PSQL_TRUST_LOCALNET=true' \
|
-e 'PSQL_MODE=slave' -e 'PSQL_TRUST_LOCALNET=true' \
|
||||||
-e 'REPLICATION_HOST=psql-master' -e 'REPLICATION_PORT=5432' \
|
-e 'REPLICATION_HOST=psql-master' -e 'REPLICATION_PORT=5432' \
|
||||||
-e 'REPLICATION_USER=replicator' -e 'REPLICATION_PASS=replicatorpass' \
|
-e 'REPLICATION_USER=replicator' -e 'REPLICATION_PASS=replicatorpass' \
|
||||||
quay.io/sameersbn/postgresql:9.4-6
|
quay.io/sameersbn/postgresql:9.4-7
|
||||||
```
|
```
|
||||||
|
|
||||||
# Enable Unaccent (Search plain text with accent)
|
# Enable Unaccent (Search plain text with accent)
|
||||||
@@ -200,7 +202,7 @@ By default unaccent is configure to `false`
|
|||||||
```bash
|
```bash
|
||||||
docker run --name postgresql -d \
|
docker run --name postgresql -d \
|
||||||
-e 'DB_UNACCENT=true' \
|
-e 'DB_UNACCENT=true' \
|
||||||
quay.io/sameersbn/postgresql:9.4-6
|
quay.io/sameersbn/postgresql:9.4-7
|
||||||
```
|
```
|
||||||
|
|
||||||
# Host UID / GID Mapping
|
# Host UID / GID Mapping
|
||||||
@@ -212,7 +214,7 @@ Also the container processes seem to be executed as the host's user/group `[what
|
|||||||
```bash
|
```bash
|
||||||
docker run --name=postgresql -it --rm [options] \
|
docker run --name=postgresql -it --rm [options] \
|
||||||
--env="USERMAP_UID=$(id -u postgres)" --env="USERMAP_GID=$(id -g postgres)" \
|
--env="USERMAP_UID=$(id -u postgres)" --env="USERMAP_GID=$(id -g postgres)" \
|
||||||
quay.io/sameersbn/postgresql:9.4-6
|
quay.io/sameersbn/postgresql:9.4-7
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
@@ -229,13 +231,13 @@ docker stop postgresql
|
|||||||
- **Step 2**: Update the docker image.
|
- **Step 2**: Update the docker image.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker pull quay.io/sameersbn/postgresql:9.4-6
|
docker pull quay.io/sameersbn/postgresql:9.4-7
|
||||||
```
|
```
|
||||||
|
|
||||||
- **Step 3**: Start the image
|
- **Step 3**: Start the image
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker run --name postgresql -d [OPTIONS] quay.io/sameersbn/postgresql:9.4-6
|
docker run --name postgresql -d [OPTIONS] quay.io/sameersbn/postgresql:9.4-7
|
||||||
```
|
```
|
||||||
|
|
||||||
# Shell Access
|
# Shell Access
|
||||||
|
|||||||
+11
-5
@@ -9,6 +9,7 @@ PSQL_TRUST_LOCALNET=${PSQL_TRUST_LOCALNET:-false}
|
|||||||
DB_NAME=${DB_NAME:-}
|
DB_NAME=${DB_NAME:-}
|
||||||
DB_USER=${DB_USER:-}
|
DB_USER=${DB_USER:-}
|
||||||
DB_PASS=${DB_PASS:-}
|
DB_PASS=${DB_PASS:-}
|
||||||
|
DB_LOCALE=${DB_LOCALE:-C}
|
||||||
DB_UNACCENT=${DB_UNACCENT:false}
|
DB_UNACCENT=${DB_UNACCENT:false}
|
||||||
|
|
||||||
# by default postgresql will start up as a standalone instance.
|
# by default postgresql will start up as a standalone instance.
|
||||||
@@ -146,9 +147,14 @@ EOF
|
|||||||
# check if we need to perform data migration
|
# check if we need to perform data migration
|
||||||
PG_OLD_VERSION=$(find ${PG_HOME}/[0-9].[0-9]/main -maxdepth 1 -name PG_VERSION 2>/dev/null | sort -r | head -n1 | cut -d'/' -f5)
|
PG_OLD_VERSION=$(find ${PG_HOME}/[0-9].[0-9]/main -maxdepth 1 -name PG_VERSION 2>/dev/null | sort -r | head -n1 | cut -d'/' -f5)
|
||||||
|
|
||||||
|
if [[ $DB_LOCALE != C ]]; then
|
||||||
|
echo "Generating required locale \"${DB_LOCALE}\"..."
|
||||||
|
locale-gen ${DB_LOCALE} >/dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
echo "Initializing database..."
|
echo "Initializing database..."
|
||||||
sudo -Hu ${PG_USER} ${PG_BINDIR}/initdb --pgdata=${PG_DATADIR} \
|
sudo -Hu ${PG_USER} ${PG_BINDIR}/initdb --pgdata=${PG_DATADIR} \
|
||||||
--username=${PG_USER} --encoding=unicode --auth=trust >/dev/null
|
--username=${PG_USER} --encoding=unicode --locale=${DB_LOCALE} --auth=trust >/dev/null
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -188,7 +194,7 @@ if [[ ${PSQL_MODE} == standalone || ${PSQL_MODE} == master ]]; then
|
|||||||
DB_USER=
|
DB_USER=
|
||||||
else
|
else
|
||||||
echo "Creating user \"${REPLICATION_USER}\"..."
|
echo "Creating user \"${REPLICATION_USER}\"..."
|
||||||
echo "CREATE ROLE ${REPLICATION_USER} WITH REPLICATION LOGIN ENCRYPTED PASSWORD '${REPLICATION_PASS}';" |
|
echo "CREATE ROLE \"${REPLICATION_USER}\" WITH REPLICATION LOGIN ENCRYPTED PASSWORD '${REPLICATION_PASS}';" |
|
||||||
sudo -Hu ${PG_USER} ${PG_BINDIR}/postgres --single \
|
sudo -Hu ${PG_USER} ${PG_BINDIR}/postgres --single \
|
||||||
-D ${PG_DATADIR} -c config_file=${PG_CONFDIR}/postgresql.conf >/dev/null
|
-D ${PG_DATADIR} -c config_file=${PG_CONFDIR}/postgresql.conf >/dev/null
|
||||||
fi
|
fi
|
||||||
@@ -203,7 +209,7 @@ if [[ ${PSQL_MODE} == standalone || ${PSQL_MODE} == master ]]; then
|
|||||||
DB_USER=
|
DB_USER=
|
||||||
else
|
else
|
||||||
echo "Creating user \"${DB_USER}\"..."
|
echo "Creating user \"${DB_USER}\"..."
|
||||||
echo "CREATE ROLE ${DB_USER} with LOGIN CREATEDB PASSWORD '${DB_PASS}';" |
|
echo "CREATE ROLE \"${DB_USER}\" with LOGIN CREATEDB PASSWORD '${DB_PASS}';" |
|
||||||
sudo -Hu ${PG_USER} ${PG_BINDIR}/postgres --single \
|
sudo -Hu ${PG_USER} ${PG_BINDIR}/postgres --single \
|
||||||
-D ${PG_DATADIR} -c config_file=${PG_CONFDIR}/postgresql.conf >/dev/null
|
-D ${PG_DATADIR} -c config_file=${PG_CONFDIR}/postgresql.conf >/dev/null
|
||||||
fi
|
fi
|
||||||
@@ -212,7 +218,7 @@ if [[ ${PSQL_MODE} == standalone || ${PSQL_MODE} == master ]]; then
|
|||||||
if [[ -n ${DB_NAME} ]]; then
|
if [[ -n ${DB_NAME} ]]; then
|
||||||
for db in $(awk -F',' '{for (i = 1 ; i <= NF ; i++) print $i}' <<< "${DB_NAME}"); do
|
for db in $(awk -F',' '{for (i = 1 ; i <= NF ; i++) print $i}' <<< "${DB_NAME}"); do
|
||||||
echo "Creating database \"${db}\"..."
|
echo "Creating database \"${db}\"..."
|
||||||
echo "CREATE DATABASE ${db};" | \
|
echo "CREATE DATABASE \"${db}\";" | \
|
||||||
sudo -Hu ${PG_USER} ${PG_BINDIR}/postgres --single \
|
sudo -Hu ${PG_USER} ${PG_BINDIR}/postgres --single \
|
||||||
-D ${PG_DATADIR} -c config_file=${PG_CONFDIR}/postgresql.conf >/dev/null
|
-D ${PG_DATADIR} -c config_file=${PG_CONFDIR}/postgresql.conf >/dev/null
|
||||||
|
|
||||||
@@ -225,7 +231,7 @@ if [[ ${PSQL_MODE} == standalone || ${PSQL_MODE} == master ]]; then
|
|||||||
|
|
||||||
if [[ -n ${DB_USER} ]]; then
|
if [[ -n ${DB_USER} ]]; then
|
||||||
echo "Granting access to database \"${db}\" for user \"${DB_USER}\"..."
|
echo "Granting access to database \"${db}\" for user \"${DB_USER}\"..."
|
||||||
echo "GRANT ALL PRIVILEGES ON DATABASE ${db} to ${DB_USER};" |
|
echo "GRANT ALL PRIVILEGES ON DATABASE \"${db}\" to \"${DB_USER}\";" |
|
||||||
sudo -Hu ${PG_USER} ${PG_BINDIR}/postgres --single \
|
sudo -Hu ${PG_USER} ${PG_BINDIR}/postgres --single \
|
||||||
-D ${PG_DATADIR} -c config_file=${PG_CONFDIR}/postgresql.conf >/dev/null
|
-D ${PG_DATADIR} -c config_file=${PG_CONFDIR}/postgresql.conf >/dev/null
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user