docker-stacks/_docs/access_database_on_host_from_docker.md

40 lines
1.2 KiB
Markdown
Raw Normal View History

# 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` by changing `listen_addresses` parameter:
```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 by adding following line to 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 and `main` cluster 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.