38 lines
1.1 KiB
Markdown
38 lines
1.1 KiB
Markdown
|
# Using database on host machine from Docker
|
||
|
|
||
|
|
||
|
## Database configuration
|
||
|
|
||
|
### PostgreSQL
|
||
|
You need to make PostgreSQL listen not only `localhost`, but also Docker's network interface.
|
||
|
|
||
|
To do that you need to add host machine IP address in the Docker network (usually `172.17.0.1`) to the `postgresql.conf`:
|
||
|
```ini
|
||
|
# Listen local interface and also Docker's network
|
||
|
listen_addresses = 'localhost,172.17.0.1'
|
||
|
```
|
||
|
|
||
|
Then you need to allow apps inside Docker containers to authenticate. That could be done in the `pg_hba.conf`:
|
||
|
```
|
||
|
# Docker network
|
||
|
host all all 172.17.0.0/12 md5
|
||
|
```
|
||
|
|
||
|
Do not forget to restart your PostgreSQL server. For PostgreSQL 12 it could be usually done like that:
|
||
|
|
||
|
```shell
|
||
|
systemctl restart postgresql@12-main.service
|
||
|
```
|
||
|
|
||
|
### MySQL / MariaDB
|
||
|
|
||
|
TBW
|
||
|
|
||
|
## Application configuration inside Docker
|
||
|
|
||
|
Stacks which allow to use external database back-end should also map `host.docker.internal` to the host machine
|
||
|
address inside Docker's default network.
|
||
|
|
||
|
So to connect to the database from the application inside the container you should use `host.docker.internal` as the
|
||
|
database host/address.
|