Skip to content

Commit

Permalink
Merge pull request docker-library#1087 from GeoCat/master
Browse files Browse the repository at this point in the history
Updated documentation of how-to connect to a postgres database
  • Loading branch information
tianon authored Dec 13, 2017
2 parents f7b0823 + 9013c0d commit dcabb07
Showing 1 changed file with 12 additions and 10 deletions.
22 changes: 12 additions & 10 deletions geonetwork/variant-postgres.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,28 +8,30 @@ In order to setup the connection from geonetwork, you **must** inject the follow

If your postgres instance is listening on a non-standard port, you must also set that variable: - `POSTGRES_DB_PORT`: postgres port on your database server (defaults to `5432`)

### Linking to a postgres container
### Connecting to a postgres database

Linking to a postgres container, is pretty straightforward: - `--link <some-postgres-container>:postgres`
If you want to connect to a postgres server, you need to pass an extra environment variable, `POSTGRES_DB_HOST`, containing the address of this server.

For instance, if you want to run the official image for postgres, you could launch it like this:
If you want to connect to an **external database server**, you can use either the IP address or the DNS as `POSTGRES_DB_HOST`. For instance, if the server is running on `mydns.net`, on port `5434`, the username is `postgres` and the password is `mysecretpassword`:

```console
$ docker run --name some-postgres -p 5432:5432 -d postgres
$ docker run --name geonetwork -d -p 8080:8080 -e POSTGRES_DB_HOST=mydns.net -e POSTGRES_DB_PORT=5434 -e POSTGRES_DB_USERNAME=postgres -e POSTGRES_DB_PASSWORD=mysecretpassword geonetwork:postgres
```

And then you could launch geonetwork, linking to this container, and setting the required environment variables:
If are want to **run postgres on a container**, you can use the container name as `POSTGRES_DB_HOST`: just make sure that containers can discover each other, by **running them in the same user-defined network**. For instance, you can create a bridge network:

```console
$ docker run --name geonetwork -d -p 8080:8080 --link some-postgres:postgres -e POSTGRES_DB_USERNAME=postgres -e POSTGRES_DB_PASSWORD=mysecretpassword geonetwork:postgres
$ docker network create --driver bridge mynet
```

### Connecting to a postgres instance
Then if you want to run the official image of postgres, using `some-postgres` as container name, you could launch it like this:

If you want to connect to a postgres server running somewhere, you need to pass an extra environment variable, containing the IP address for this server (which could be localhost, if you are running it locally). - `POSTGRES_DB_HOST`: IP address of your database server
```console
$ docker run --name some-postgres --network=mynet -d postgres
```

For instance, if the server is running on `192.168.1.10`, on port `5434`, the username is `postgres` and the password is `mysecretpassword`:
And then you could launch geonetwork, making sure you join the same network, and setting the required environment variables, including the `POSTGRES_DB_HOST`:

```console
$ docker run --name geonetwork -d -p 8080:8080 -e POSTGRES_DB_HOST=192.168.1.10 -e POSTGRES_DB_PORT=5434 -e POSTGRES_DB_USERNAME=postgres -e POSTGRES_DB_PASSWORD=mysecretpassword geonetwork:postgres
$ docker run --name geonetwork -d -p 8080:8080 --network=mynet -e POSTGRES_DB_HOST=some-postgres -e POSTGRES_DB_PORT=5432 -e POSTGRES_DB_USERNAME=postgres -e POSTGRES_DB_PASSWORD=mysecretpassword geonetwork:postgres
```

0 comments on commit dcabb07

Please sign in to comment.