【发布时间】:2019-03-07 08:44:04
【问题描述】:
我对 docker 和 docker compose 还很陌生,所以如果这是一个愚蠢的问题,请原谅我......
我有一个包含 2 个容器的 compose 文件。一个暴露了 8123 端口的 homeassistant 容器和一个 5432 的数据库。 homeassistant 可以使用 url postgresql://user:password@db:5432/homeassistant_db 访问数据库。我认为这是因为 docker 在主机上创建了db 绑定,这就是我可以连接到db 的原因。
但是我需要将 homeassistant 绑定到主机,我可以使用 network_mode: "host" 来完成,你可以在我的配置中看到注释掉了。当我这样做时,我确实可以绑定到主机并且 homeassistant 可以发现网络设备等......
不幸的是,这中断了与数据库的连接,因此我无法再使用postgresql://user:password@db:5432/homeassistant_db url。
如何将 homeassistant 连接到主机并保持数据库连接正常工作?我想我可以将数据库主机从db 更改为pi 的url 或网络名称(例如postgresql://user:password@192.168.0.100:5432/homeassistant_db 或postgresql://user:password@homeassistant.local:5432/homeassistant_db),但这并不像它可能的那样干净或健壮。
我不太了解网络绑定,所以我想尝试学习,以便以后自己解决这个问题。
在下面编写文件:
version: '3'
services:
db:
restart: always
container_name: "homeassistant_db_container"
# image: postgres:latest
image: tobi312/rpi-postgresql
ports:
- "5432:5432"
volumes:
- ./data/postgres/data:/var/lib/postgresql/data/pgdata
env_file:
- ./envs/database.env
home_assistant:
container_name: "homeassistant_container"
restart: always
image: homeassistant/raspberrypi3-homeassistant
ports:
- "8123:8123"
# network_mode: "host"
env_file:
- ./envs/homeassistant.env
volumes:
- ./configs/homeassistant:/config
depends_on:
- db
volumes:
data:
driver_opts:
type: none
o: bind
device: "${PWD}/data/postgres"
【问题讨论】:
标签: docker docker-compose docker-networking