From 944de98b4a01ca08ae6d3f292044d6aeffe5fbf3 Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Sat, 24 Feb 2024 00:39:27 +0200 Subject: [PATCH] Docker: migrate from bind mounts to named volumes --- docker/authentik/docker-compose.toml | 25 ++++++++++------- docker/caddy/docker-compose.toml | 14 +++++++--- docker/ddns/docker-compose.toml | 2 +- docker/firefish/docker-compose.toml | 16 ++++++----- docker/forgejo/docker-compose.toml | 7 +++-- docker/freshrss/docker-compose.toml | 8 +++--- docker/headscale/docker-compose.toml | 11 ++++---- docker/homeautomation/docker-compose.toml | 14 +++++----- docker/jellyfin/docker-compose.toml | 18 ++++++++++--- docker/jellyfin/docker-compose.yaml | 33 +++++++++++++++++++++++ docker/mumble/docker-compose.toml | 6 ++--- docker/nextcloud/docker-compose.toml | 11 +++++--- docker/pihole/docker-compose.toml | 10 +++---- docker/postgres/docker-compose.toml | 5 +++- docker/searx/docker-compose.toml | 5 +++- docker/stats/docker-compose.toml | 2 +- docker/tvheadend/docker-compose.toml | 8 ++++-- docker/woodpecker/docker-compose.toml | 10 +++---- 18 files changed, 143 insertions(+), 62 deletions(-) create mode 100644 docker/jellyfin/docker-compose.yaml diff --git a/docker/authentik/docker-compose.toml b/docker/authentik/docker-compose.toml index 24904d9..9339e9c 100644 --- a/docker/authentik/docker-compose.toml +++ b/docker/authentik/docker-compose.toml @@ -1,9 +1,16 @@ +[volumes] +redis = {} +media = {} +custom_templates = {} +geoip = {} +backups = {} + [services.redis] image = "redis:alpine" container_name = "authentik-redis" networks = ["authentik"] restart = "unless-stopped" -volumes = ["/docker/authentik/redis:/data"] +volumes = ["redis:/data"] [services.redis.healthcheck] test = ["CMD-SHELL", "redis-cli ping | grep PONG"] @@ -18,9 +25,9 @@ container_name = "authentik" restart = "unless-stopped" command = "server" volumes = [ - "/docker/authentik/media:/media", - "/docker/authentik/custom-templates:/templates", - "/docker/authentik/geoip:/geoip", + "media:/media", + "custom_templates:/templates", + "geoip:/geoip", ] env_file = [".env"] networks = ["authentik", "postgres", "proxy"] @@ -32,10 +39,10 @@ restart = "unless-stopped" command = "worker" user = "root" volumes = [ - "/docker/authentik/backups:/backups", - "/docker/authentik/custom-templates:/templates", - "/docker/authentik/geoip:/geoip", - "/docker/authentik/media:/media", + "backups:/backups", + "custom_templates:/templates", + "geoip:/geoip", + "media:/media", "/var/run/docker.sock:/var/run/docker.sock", ] env_file = [".env"] @@ -46,7 +53,7 @@ image = "maxmindinc/geoipupdate" container_name = "authentik-geoipupdate" restart = "unless-stopped" networks = ["authentik"] -volumes = ["/docker/authentik/geoip:/usr/share/GeoIP"] +volumes = ["geoip:/usr/share/GeoIP"] env_file = [".env"] [services.geoipupdate.environment] diff --git a/docker/caddy/docker-compose.toml b/docker/caddy/docker-compose.toml index 7a51f6f..9fe8cbd 100644 --- a/docker/caddy/docker-compose.toml +++ b/docker/caddy/docker-compose.toml @@ -1,14 +1,20 @@ +[volumes] +data = {} +config = {} + +[volumes.nextcloud_config] +external = true + [services.caddy] image = "slothcroissant/caddy-cloudflaredns" container_name = "caddy" restart = "unless-stopped" -user = "82:82" ports = ["80:80", "443:443/tcp", "443:443/udp"] networks = ["proxy"] volumes = [ - "/docker/caddy/data:/data", - "/docker/caddy/config:/config", - "/docker/nextcloud:/var/www/nextcloud", + "data:/data", + "config:/config", + "nextcloud_config:/var/www/nextcloud", "/var/www/korhonen.cc:/var/www/korhonen.cc", "/var/www/wkd:/var/www/wkd", "/var/www/index.korhonen.cc:/var/www/index.korhonen.cc", diff --git a/docker/ddns/docker-compose.toml b/docker/ddns/docker-compose.toml index 7bf009e..b87582c 100644 --- a/docker/ddns/docker-compose.toml +++ b/docker/ddns/docker-compose.toml @@ -4,5 +4,5 @@ container_name = "cloudflare-ddns" security_opt = ["no-new-privileges:true"] network_mode = "host" environment = ["PUID=1000", "PGID=1000"] -volumes = ["/docker/ddns/config.json:/config.json"] +volumes = ["/mnt/Storage/docker/ddns/config.json:/config.json"] restart = "unless-stopped" diff --git a/docker/firefish/docker-compose.toml b/docker/firefish/docker-compose.toml index 01ce34a..a9e9f78 100644 --- a/docker/firefish/docker-compose.toml +++ b/docker/firefish/docker-compose.toml @@ -1,4 +1,8 @@ -#:schema https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json +[volumes] +files = {} +config = {} +redis = {} +sonic = {} [services.firefish] image = "registry.firefish.dev/firefish/firefish" @@ -9,8 +13,8 @@ ports = ["3083:3000"] networks = ["firefish", "proxy", "postgres"] environment = { NODE_ENV = "production" } volumes = [ - "/docker/firefish/files:/firefish/files", - "/docker/firefish/config:/firefish/.config:ro", + "files:/firefish/files", + "config:/firefish/.config:ro", ] [services.redis] @@ -18,7 +22,7 @@ image = "redis" container_name = "redis-firefish" restart = "unless-stopped" networks = ["firefish"] -volumes = ["/docker/firefish/redis:/data"] +volumes = ["redis:/data"] [services.sonic] image = "valeriansaliou/sonic:v1.4.0" @@ -26,8 +30,8 @@ container_name = "sonic-firefish" logging = { driver = "none" } networks = ["firefish"] volumes = [ - "/docker/firefish/sonic:/var/lib/sonic/store", - "/docker/firefish/sonic/config.cfg:/etc/sonic.cfg", + "sonic:/var/lib/sonic/store", + "/mnt/Storage/docker/firefish-sonic/config.cfg:/etc/sonic.cfg", ] env_file = ".env" diff --git a/docker/forgejo/docker-compose.toml b/docker/forgejo/docker-compose.toml index a6dc63d..602fc2e 100644 --- a/docker/forgejo/docker-compose.toml +++ b/docker/forgejo/docker-compose.toml @@ -1,11 +1,14 @@ +[volumes] +data = {} + [services.forgejo] image = "git.korhonen.cc/functionalhacker/forgejo-asciidoc" container_name = "forgejo" -environment = ["TZ=Europe/Helsinki", "USER_UID=1000", "USER_GID=1000"] +environment = ["TZ=Europe/Helsinki"] restart = "unless-stopped" networks = ["postgres", "proxy"] ports = ["22:22"] -volumes = ["/docker/forgejo:/data", "/etc/localtime:/etc/localtime:ro"] +volumes = ["data:/data", "/etc/localtime:/etc/localtime:ro"] [networks.postgres] external = true diff --git a/docker/freshrss/docker-compose.toml b/docker/freshrss/docker-compose.toml index cfd76b9..cfbbb21 100644 --- a/docker/freshrss/docker-compose.toml +++ b/docker/freshrss/docker-compose.toml @@ -1,13 +1,13 @@ +[volumes] +config = {} + [services.freshrss] image = "linuxserver/freshrss" container_name = "freshrss" restart = "unless-stopped" networks = ["freshrss", "postgres", "proxy"] environment = ["PUID=1000", "PGID=985", "TZ=Europe/Helsinki"] -volumes = [ - "/docker/freshrss/freshrss:/config", - "/etc/localtime:/etc/localtime:ro", -] +volumes = ["config:/config", "/etc/localtime:/etc/localtime:ro"] [networks.freshrss] external = false diff --git a/docker/headscale/docker-compose.toml b/docker/headscale/docker-compose.toml index fff546b..b2c79d0 100644 --- a/docker/headscale/docker-compose.toml +++ b/docker/headscale/docker-compose.toml @@ -1,10 +1,11 @@ +[volumes] +config = {} +data = {} + [services.headscale] -image = "headscale/headscale" +image = "headscale/headscale:0" container_name = "headscale" -volumes = [ - "/docker/headscale/config:/etc/headscale/", - "/docker/headscale/data:/var/lib/headscale", -] +volumes = ["config:/etc/headscale", "data:/var/lib/headscale"] ports = ["3478:3478/udp"] command = "headscale serve" restart = "unless-stopped" diff --git a/docker/homeautomation/docker-compose.toml b/docker/homeautomation/docker-compose.toml index 65608d5..185f4ea 100644 --- a/docker/homeautomation/docker-compose.toml +++ b/docker/homeautomation/docker-compose.toml @@ -1,12 +1,14 @@ +[volumes] +hass = {} +rhasspy = {} +mosquitto = {} + [services.home-assistant] container_name = "home-assistant" image = "homeassistant/home-assistant" environment = ["TZ=Europe/Helsinki"] devices = ["/dev/ttyACM0"] -volumes = [ - "/docker/homeautomation/home-assistant:/config", - "/etc/localtime:/etc/localtime:ro", -] +volumes = ["hass:/config", "/etc/localtime:/etc/localtime:ro"] restart = "unless-stopped" networks = ["homeautomation", "postgres", "proxy"] ports = ["8123:8123", "8300:8300"] @@ -20,7 +22,7 @@ environment = ["TZ=Europe/Helsinki"] ports = ["1883:1883", "8866:8866"] networks = ["homeautomation"] volumes = [ - "/docker/homeautomation/mosquitto:/mosquitto", + "mosquitto:/mosquitto", "/etc/localtime:/etc/localtime:ro", ] restart = "unless-stopped" @@ -29,7 +31,7 @@ restart = "unless-stopped" container_name = "rhasspy" image = "rhasspy/rhasspy" command = "--profile en --user-profiles /profiles" -volumes = ["/docker/homeautomation/rhasspy:/profiles"] +volumes = ["rhasspy:/profiles"] environment = ["TZ=Europe/Helsinki"] ports = ["12101:12101"] networks = ["homeautomation"] diff --git a/docker/jellyfin/docker-compose.toml b/docker/jellyfin/docker-compose.toml index db63539..d3d65a5 100644 --- a/docker/jellyfin/docker-compose.toml +++ b/docker/jellyfin/docker-compose.toml @@ -1,3 +1,13 @@ +[volumes] +config = {} +cache = {} + +[volumes.media] +external = true + +[volumes.nextcloud_data] +external = true + [services.jellyfin] image = "jellyfin/jellyfin" container_name = "jellyfin" @@ -6,10 +16,10 @@ ports = ["8096:8096"] networks = ["proxy", "authentik"] restart = "unless-stopped" volumes = [ - "/docker/jellyfin/config:/config", - "/docker/jellyfin/cache:/cache", - "/mnt/Storage/Media:/media", - "/mnt/Storage/Nextcloud/FunctionalHacker/files/Media/Music:/media/Music", + "config:/config", + "cache:/cache", + "media:/media", + "/mnt/Storage/docker/volumes/nextcloud_data/FunctionalHacker/files/Media/Music:/media/Music", "/etc/localtime:/etc/localtime:ro", ] devices = [ diff --git a/docker/jellyfin/docker-compose.yaml b/docker/jellyfin/docker-compose.yaml new file mode 100644 index 0000000..772748f --- /dev/null +++ b/docker/jellyfin/docker-compose.yaml @@ -0,0 +1,33 @@ +volumes: + config: {} + cache: {} + media: + external: true + nextcloud_data: + external: true +services: + jellyfin: + image: jellyfin/jellyfin + container_name: jellyfin + environment: + - TZ=Europe/Helsinki + ports: + - 8096:8096 + networks: + - proxy + - authentik + restart: unless-stopped + volumes: + - config:/config + - cache:/cache + - media:/media + - /mnt/Storage/docker/nextcloud_data/FunctionalHacker/files/Media/Music:/media/Music + - /etc/localtime:/etc/localtime:ro + devices: + - /dev/dri/renderD128:/dev/dri/renderD128 + - /dev/dri/card1:/dev/dri/card0 +networks: + proxy: + external: true + authentik: + external: true diff --git a/docker/mumble/docker-compose.toml b/docker/mumble/docker-compose.toml index fa1afaa..de0b7d2 100644 --- a/docker/mumble/docker-compose.toml +++ b/docker/mumble/docker-compose.toml @@ -1,10 +1,10 @@ -[services] +[volumes] +config = {} [services.mumble] container_name = "mumble" image = "phlak/mumble" -user = "1000:985" environment = ["TZ=Europe/Helsinki"] network_mode = "host" -volumes = ["/docker/mumble:/etc/mumble", "/etc/localtime:/etc/localtime:ro"] +volumes = ["config:/etc/mumble", "/etc/localtime:/etc/localtime:ro"] restart = "unless-stopped" diff --git a/docker/nextcloud/docker-compose.toml b/docker/nextcloud/docker-compose.toml index cad8c2a..cec2461 100644 --- a/docker/nextcloud/docker-compose.toml +++ b/docker/nextcloud/docker-compose.toml @@ -1,12 +1,17 @@ +[volumes.nextcloud_config] +external = true + +[volumes.nextcloud_data] +external = true + [services.nextcloud] image = "nextcloud:fpm-alpine" container_name = "nextcloud" restart = "unless-stopped" -user = "82:82" networks = ["nextcloud", "postgres", "proxy"] volumes = [ - "/docker/nextcloud:/var/www/html:z", - "/mnt/Storage/Nextcloud:/var/www/html/data", + "nextcloud_config:/var/www/html", + "nextcloud_data:/var/www/html/data", "/etc/localtime:/etc/localtime:ro", ] environment = [ diff --git a/docker/pihole/docker-compose.toml b/docker/pihole/docker-compose.toml index 9f32819..b9fccf3 100644 --- a/docker/pihole/docker-compose.toml +++ b/docker/pihole/docker-compose.toml @@ -1,4 +1,6 @@ -[services] +[volumes] +config = {} +dnsmasq = {} [services.pihole] container_name = "pihole" @@ -6,8 +8,8 @@ image = "pihole/pihole" ports = ["53:53/tcp", "53:53/udp", "67:67/udp", "8069:80/tcp"] networks = ["proxy"] volumes = [ - "/docker/pihole/pihole:/etc/pihole/", - "/docker/pihole/dnsmasq:/etc/dnsmasq.d/", + "config:/etc/pihole/", + "dnsmasq:/etc/dnsmasq.d/", ] dns = ["127.0.0.1", "1.1.1.1"] cap_add = ["NET_ADMIN"] @@ -17,7 +19,5 @@ restart = "unless-stopped" TZ = "Europe/Helsinki" WEBPASSWORD = "${WEBPASSWORD}" -[networks] - [networks.proxy] external = true diff --git a/docker/postgres/docker-compose.toml b/docker/postgres/docker-compose.toml index b826ee3..c9e7618 100644 --- a/docker/postgres/docker-compose.toml +++ b/docker/postgres/docker-compose.toml @@ -1,3 +1,6 @@ +[volumes] +data = {} + [services.postgres] container_name = "postgres" image = "postgres:16" @@ -5,7 +8,7 @@ environment = ["TZ=Europe/Helsinki"] ports = ["127.0.0.1:5432:5432"] networks = ["postgres"] volumes = [ - "/docker/postgres:/var/lib/postgresql/data", + "data:/var/lib/postgresql/data", "/etc/localtime:/etc/localtime:ro", ] restart = "unless-stopped" diff --git a/docker/searx/docker-compose.toml b/docker/searx/docker-compose.toml index f2c1dd7..53f082b 100644 --- a/docker/searx/docker-compose.toml +++ b/docker/searx/docker-compose.toml @@ -1,10 +1,13 @@ +[volumes] +config = {} + [services.searx] container_name = "searx" image = "searxng/searxng" restart = "unless-stopped" networks = ["searx", "proxy"] volumes = [ - "/docker/searx:/etc/searxng", + "config:/etc/searxng", #"/docker/searx/logo.png:/usr/local/searxng/searx/static/themes/simple/img/searxng.png:ro" ] environment = ["SEARXNG_BASE_URL=https://search.korhonen.cc/"] diff --git a/docker/stats/docker-compose.toml b/docker/stats/docker-compose.toml index ff0e084..15e5141 100644 --- a/docker/stats/docker-compose.toml +++ b/docker/stats/docker-compose.toml @@ -1,7 +1,7 @@ [services.grafana] image = "grafana/grafana" container_name = "grafana" -volumes = ["/docker/stats/grafana:/var/lib/grafana"] +volumes = ["grafana:/var/lib/grafana"] networks = ["stats", "proxy"] user = "1000:984" env_file = [".env"] diff --git a/docker/tvheadend/docker-compose.toml b/docker/tvheadend/docker-compose.toml index cdbff58..d1a3d97 100644 --- a/docker/tvheadend/docker-compose.toml +++ b/docker/tvheadend/docker-compose.toml @@ -1,11 +1,15 @@ +[volumes] +config = {} +picons = {} + [services.tvheadend] image = "linuxserver/tvheadend" container_name = "tvheadend" environment = ["TZ=Europe/Helsinki", "PUID=1000", "PGID=985"] volumes = [ - "/docker/tvheadend:/config", + "config:/config", + "picons:/picons", "/mnt/Storage/Media/PVR:/recordings", - "/mnt/Storage/picons:/picons", "/etc/localtime:/etc/localtime:ro", ] ports = ["9981:9981", "9982:9982"] diff --git a/docker/woodpecker/docker-compose.toml b/docker/woodpecker/docker-compose.toml index 7a4c823..e98eb4b 100644 --- a/docker/woodpecker/docker-compose.toml +++ b/docker/woodpecker/docker-compose.toml @@ -1,8 +1,11 @@ +[volumes] +data = {} + [services.woodpecker] image = "woodpeckerci/woodpecker-server" container_name = "woodpecker" restart = "unless-stopped" -volumes = ["/docker/woodpecker/:/var/lib/woodpecker/"] +volumes = ["data:/var/lib/woodpecker"] env_file = [".env"] environment = [ "WOODPECKER_OPEN=true", @@ -24,10 +27,7 @@ restart = "unless-stopped" depends_on = ["woodpecker"] volumes = ["/var/run/docker.sock:/var/run/docker.sock"] env_file = [".env"] -environment = [ - "WOODPECKER_SERVER=woodpecker:9000", - "WOODPECKER_AGENT_SECRET", -] +environment = ["WOODPECKER_SERVER=woodpecker:9000", "WOODPECKER_AGENT_SECRET"] [networks.proxy] external = true