Я довольно плохо знаком с docker и docker compose, так что простите, если это глупый вопрос ...
У меня есть составной файл с 2 контейнерами. Контейнер Homeassistant с портом 8123 открыт и база данных с 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
на 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"