我有一个带有 Transmission-OpenVPN 容器的堆栈,它反过来可以让网络访问一堆其他容器。一切正常。最近我安装了 Watchtower,但我遇到的一个问题是,当 VPN 的映像更新并且其中一个依赖容器随后停止时,它无法自行重新启动 - 退出代码 128 - 原因是它似乎是试图引用旧 VPN 容器的网络。手动这就像将网络设置为依赖的 VPN 容器的新版本一样简单,或者只是重新启动整个堆栈。
但显然这违背了使用 Watchtower 自动更新的全部目的,并且将 VPN 容器排除在自动更新之外的解决方案同样是避免问题而不是解决问题。
我有什么选择 - 我曾考虑在 Watchtower 进行每周更新检查约一小时后在机器上添加一个 cron 作业以重新启动堆栈,但如果我尝试这样做,我会遇到同样的问题,即家属没有正确的网络开始/停止/重启。
Portainer 中是否有相当于停止/启动堆栈的命令行?如果有的话,我可以在 cron 作业中运行它并自动化这个令人头疼的问题。我在其他地方看到过有关 Edge 工作的讨论,但这似乎已被贬低,因此不是一个非常可维护的解决方案。
这个周末我对这个问题进行了广泛的研究,没有人真正给出确切的答案。任何帮助深表感谢。
我正在运行 Portainer 2.9.0。我的码头工人撰写:
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