NEWS
? docker-compose mit redis, DNS-Fehler
-
Hej,
ich versuche mich an einer IOBroker-Installation mit docker-compose und redis. Die .yml-Datei:
version: "2" services: iobroker: container_name: iobroker image: buanet/iobroker:latest-v7 hostname: iobroker dns: - 192.168.3.10 restart: unless-stopped networks: internal: ipv4_address: 172.18.0.2 ports: - "1880:1880" #node-red - "1883:1883" #mqtt - "2001:2001" #homematic - "8081:8081" #iobroker admin - "8282:8282" #flot - "8088:8088" #terminal - "8284:8284" #socketIO environment: - IOB_STATESDB_HOST=redis - IOB_STATESDB_PORT=6379 - IOB_STATESDB_TYPE=redis - SETGID=1200 - SETUID=1200 volumes: - /opt/docker-iobroker/iobroker-data:/opt/iobroker depends_on: - redis redis: container_name: redis image: redis:latest hostname: redis restart: unless-stopped networks: internal: ipv4_address: 172.18.0.3 ports: - "6379:6379" volumes: - /opt/docker-iobroker/redis_data:/data networks: internal: driver: bridge ipam: config: - subnet: 172.18.0.0/16 gateway: 172.18.0.1 ip_range: 172.18.0.1/24
Die erste Installation (mit gelöschten Volumes) scheitert an fehlendem DNS im Container:
iobroker | -------------------------------------------------------------------------------- iobroker | ----- Step 1 of 5: Preparing container ----- iobroker | -------------------------------------------------------------------------------- iobroker | iobroker | Updating Linux packages on first run... iobroker | W: Failed to fetch http://deb.debian.org/debian/dists/bullseye/InRelease Temporary failure resolving 'deb.debian.org' iobroker | W: Failed to fetch http://deb.debian.org/debian-security/dists/bullseye-security/InRelease Temporary failure resolving 'deb.debian.org' iobroker | W: Failed to fetch http://deb.debian.org/debian/dists/bullseye-updates/InRelease Temporary failure resolving 'deb.debian.org' iobroker | W: Failed to fetch https://deb.nodesource.com/node_16.x/dists/bullseye/InRelease Temporary failure resolving 'deb.nodesource.com' iobroker | W: Some index files failed to download. They have been ignored, or old ones used instead. iobroker | Done. iobroker | iobroker | PACKAGES is set. Installing additional Linux packages. iobroker | Checking the following packages: ...
Die DNS-Konfiguration des Hosts ist /etc/resolv.conf:
root@wyse5070-lan-docker:/opt/docker-iobroker# more /etc/resolv.conf nameserver 127.0.0.1
welches von einem PiHole Docker Container zur Verfügung gestellt wird. Die DNS-Auflösung auf HOST-Seite funktioniert tadellos. Docker wurde entsprechend konfiguriert:
root@wyse5070-lan-docker:/opt/docker-iobroker# more /etc/docker/daemon.json { "dns": ["192.168.3.10"] }
Auch im docker-compose.yml ist ein DNS-Server mit identischer IP konfiguriert.
Ich bin docker-Anfänger und nun etwas ratlos, was denn wohl hier flasch ist. Ein RTFM oder eine Lösungsidee wäre sehr hilfreich.
Danke, -MN
-
darf ich fragen warum du den dns und die ganzen ip-adressen selbst definierst?
überlasse das doch docker
oder hast du da einen speziellen dns laufen?hier meine docker-compose, allerdings mit macvlan für eine eigene ip für den iobroker.
wenn du aber die mit #x markierten zeilen weglässt, dann müsste es doch gehender rest müsste selbsterklärend sein
version: '3' services: iobrokerprod4: restart: always image: buanet/iobroker:latest container_name: iobrokerprod4 hostname: iobrokerprod4 ports: - "8081:8081" - "1234:1234" environment: SETGID: 1001 SETUID: 1001 volumes: - /home/iobroker/docker/volume/iobroker_prod4:/opt/iobroker - /media/iobroker_backup/:/opt/iobroker/backup networks: dockerMACVLAN: #x ipv4_address: 192.168.1.85 #x iobrokerprod4: redis4: image: "redis:alpine" volumes: - /home/iobroker/docker/volume/redis_prod4:/data networks: iobrokerprod4: networks: dockerMACVLAN: #x external: true #x iobrokerprod4:
wenn du dann später zur Konfiguration die ip-Adressen benötigst, dann kannst du die jeweiligen labels der services nehmen. diese werden automatisch von docker im jeweiligen netz als hostnamen registriert und aufgelöst.
bspw wenn du dann in der konfiguration des iobrokers auf redis umstellen willst, dann verwendest du anstatt der ip einfach "redis4"