Когда Watchtower обновляет контейнер VPN Docker, он ломает зависящие от него контейнеры.
У меня есть стек с контейнером Transmission-OpenVPN, который, в свою очередь, предоставляет сетевой доступ к множеству других контейнеров. Все нормально работает. Недавно я установил Watchtower, но проблема, с которой я столкнулся, заключается в том, что когда изображение для VPN обновляется и один из зависимых контейнеров затем останавливается, он не может перезапустить себя - код выхода 128 - причина в том, что он выглядит пытается сослаться на сеть старого контейнера VPN. Вручную это так же просто, как настроить сеть на новую версию контейнера VPN на зависимом сервере или просто перезапустить весь стек.
Но, очевидно, это сводит на нет всю цель автоматизации обновлений с помощью Watchtower, и решение исключить контейнер VPN из автоматических обновлений также позволяет избежать проблемы, а не решить ее.
Какие у меня есть варианты - я думал о добавлении задания cron на машину для перезапуска стека примерно через час после того, как Watchtower выполняет еженедельную проверку обновлений, но я сталкиваюсь с той же проблемой с иждивенцами, не имеющими правильной сети, если я пытаюсь старт / стоп / перезапуск.
Есть ли в Portainer эквивалент стека остановки / запуска в командной строке? Если бы он был, я мог бы просто запустить его в задании cron и автоматизировать эту головную боль. Я видел разговоры о заданиях Edge в другом месте, но это, похоже, обесценилось и не очень удобное в обслуживании решение как таковое.
В эти выходные я тщательно исследовал этот вопрос, и на самом деле ни у кого нет точного ответа. Любая помощь горячо приветствуется.
Я использую Portainer 2.9.0. Мой docker-compose:
services:
transmission-openvpn:
volumes:
- /srv/dev-disk-by-uuid-f838e6cd-29d5-4011-bb25-041f95d8e52a/data/appdata/transmissionVPN/data/:/data
- /srv/dev-disk-by-uuid-f838e6cd-29d5-4011-bb25-041f95d8e52a/data/appdata/transmissionVPN/config:/config
- /etc/localtime:/etc/localtime:ro
environment:
- PUID=1000
- PGID=1000
- CREATE_TUN_DEVICE=true
- OPENVPN_PROVIDER=PIA
- OPENVPN_CONFIG=spain
- OPENVPN_USERNAME=******
- OPENVPN_PASSWORD=*******
- OPENVPN_OPTS=--inactive 3600 --ping 10 --ping-exit 60
- WEBPROXY_ENABLED=false
- LOCAL_NETWORK=192.168.68.0/24
- TRANSMISSION_SCRAPE_PAUSED_TORRENTS_ENABLED=false
dns:
- 8.8.8.8
- 8.8.4.4
cap_add:
- NET_ADMIN
logging:
driver: json-file
options:
max-size: 10m
ports:
- 9091:9091
- 9117:9117
- 7878:7878
- 8989:8989
- 8686:8686
- 5299:5299
- 5076:5076
restart: always
image: haugene/transmission-openvpn:latest
container_name: transmission-openvpn
labels:
- com.centurylinklabs.watchtower.enable="true"
- com.centurylinklabs.watchtower.depends-on="jackett,radarr,sonarr,lidarr,lazylibrarian,hydra2"
jackett:
image: linuxserver/jackett
container_name: jackett
network_mode: "service:transmission-openvpn"
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
- AUTO_UPDATE=true #optional
- RUN_OPTS=#optional
volumes:
- /srv/dev-disk-by-label-datadisk/appdata/jackett:/config
#Jackett only needs config
restart: unless-stopped
radarr:
image: linuxserver/radarr
network_mode: "service:transmission-openvpn"
container_name: radarr
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
- UMASK_SET=022 #optional
volumes:
- /srv/dev-disk-by-label-datadisk/appdata/radarr:/config
- /srv/dev-disk-by-label-datadisk/media:/media
restart: unless-stopped
sonarr:
image: linuxserver/sonarr
network_mode: "service:transmission-openvpn"
container_name: sonarr
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
- UMASK_SET=022 #optional
volumes:
- /srv/dev-disk-by-label-datadisk/appdata/sonarr:/config
- /srv/dev-disk-by-label-datadisk/media/:/media
restart: unless-stopped
lidarr:
image: linuxserver/lidarr
network_mode: "service:transmission-openvpn"
container_name: lidarr
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
- UMASK_SET=022 #optional
volumes:
- /srv/dev-disk-by-label-datadisk/appdata/lidarr:/config
- /srv/dev-disk-by-label-datadisk/media/:/media
restart: unless-stopped
lazylibrarian:
image: linuxserver/lazylibrarian
network_mode: "service:transmission-openvpn"
container_name: lazylibrarian
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
#- DOCKER_MODS=linuxserver/calibre-web:calibre #optional
volumes:
- /srv/dev-disk-by-label-datadisk/appdata/lazylibrarian/config:/config
- /srv/dev-disk-by-label-datadisk/media:/media
- /srv/dev-disk-by-label-datadisk/appdata/lazylibrarian/books:/books
restart: unless-stopped
hydra2:
image: ghcr.io/linuxserver/nzbhydra2
network_mode: "service:transmission-openvpn"
container_name: hydra2
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
volumes:
- /srv/dev-disk-by-label-datadisk/appdata/hydra2/config:/config
restart: unless-stopped