Docker: migrate from bind mounts to named volumes

This commit is contained in:
Marko Korhonen 2024-02-24 00:39:27 +02:00
parent ee97d8a590
commit 944de98b4a
Signed by: FunctionalHacker
GPG key ID: A7F78BCB859CD890
18 changed files with 143 additions and 62 deletions

View file

@ -1,9 +1,16 @@
[volumes]
redis = {}
media = {}
custom_templates = {}
geoip = {}
backups = {}
[services.redis] [services.redis]
image = "redis:alpine" image = "redis:alpine"
container_name = "authentik-redis" container_name = "authentik-redis"
networks = ["authentik"] networks = ["authentik"]
restart = "unless-stopped" restart = "unless-stopped"
volumes = ["/docker/authentik/redis:/data"] volumes = ["redis:/data"]
[services.redis.healthcheck] [services.redis.healthcheck]
test = ["CMD-SHELL", "redis-cli ping | grep PONG"] test = ["CMD-SHELL", "redis-cli ping | grep PONG"]
@ -18,9 +25,9 @@ container_name = "authentik"
restart = "unless-stopped" restart = "unless-stopped"
command = "server" command = "server"
volumes = [ volumes = [
"/docker/authentik/media:/media", "media:/media",
"/docker/authentik/custom-templates:/templates", "custom_templates:/templates",
"/docker/authentik/geoip:/geoip", "geoip:/geoip",
] ]
env_file = [".env"] env_file = [".env"]
networks = ["authentik", "postgres", "proxy"] networks = ["authentik", "postgres", "proxy"]
@ -32,10 +39,10 @@ restart = "unless-stopped"
command = "worker" command = "worker"
user = "root" user = "root"
volumes = [ volumes = [
"/docker/authentik/backups:/backups", "backups:/backups",
"/docker/authentik/custom-templates:/templates", "custom_templates:/templates",
"/docker/authentik/geoip:/geoip", "geoip:/geoip",
"/docker/authentik/media:/media", "media:/media",
"/var/run/docker.sock:/var/run/docker.sock", "/var/run/docker.sock:/var/run/docker.sock",
] ]
env_file = [".env"] env_file = [".env"]
@ -46,7 +53,7 @@ image = "maxmindinc/geoipupdate"
container_name = "authentik-geoipupdate" container_name = "authentik-geoipupdate"
restart = "unless-stopped" restart = "unless-stopped"
networks = ["authentik"] networks = ["authentik"]
volumes = ["/docker/authentik/geoip:/usr/share/GeoIP"] volumes = ["geoip:/usr/share/GeoIP"]
env_file = [".env"] env_file = [".env"]
[services.geoipupdate.environment] [services.geoipupdate.environment]

View file

@ -1,14 +1,20 @@
[volumes]
data = {}
config = {}
[volumes.nextcloud_config]
external = true
[services.caddy] [services.caddy]
image = "slothcroissant/caddy-cloudflaredns" image = "slothcroissant/caddy-cloudflaredns"
container_name = "caddy" container_name = "caddy"
restart = "unless-stopped" restart = "unless-stopped"
user = "82:82"
ports = ["80:80", "443:443/tcp", "443:443/udp"] ports = ["80:80", "443:443/tcp", "443:443/udp"]
networks = ["proxy"] networks = ["proxy"]
volumes = [ volumes = [
"/docker/caddy/data:/data", "data:/data",
"/docker/caddy/config:/config", "config:/config",
"/docker/nextcloud:/var/www/nextcloud", "nextcloud_config:/var/www/nextcloud",
"/var/www/korhonen.cc:/var/www/korhonen.cc", "/var/www/korhonen.cc:/var/www/korhonen.cc",
"/var/www/wkd:/var/www/wkd", "/var/www/wkd:/var/www/wkd",
"/var/www/index.korhonen.cc:/var/www/index.korhonen.cc", "/var/www/index.korhonen.cc:/var/www/index.korhonen.cc",

View file

@ -4,5 +4,5 @@ container_name = "cloudflare-ddns"
security_opt = ["no-new-privileges:true"] security_opt = ["no-new-privileges:true"]
network_mode = "host" network_mode = "host"
environment = ["PUID=1000", "PGID=1000"] environment = ["PUID=1000", "PGID=1000"]
volumes = ["/docker/ddns/config.json:/config.json"] volumes = ["/mnt/Storage/docker/ddns/config.json:/config.json"]
restart = "unless-stopped" restart = "unless-stopped"

View file

@ -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] [services.firefish]
image = "registry.firefish.dev/firefish/firefish" image = "registry.firefish.dev/firefish/firefish"
@ -9,8 +13,8 @@ ports = ["3083:3000"]
networks = ["firefish", "proxy", "postgres"] networks = ["firefish", "proxy", "postgres"]
environment = { NODE_ENV = "production" } environment = { NODE_ENV = "production" }
volumes = [ volumes = [
"/docker/firefish/files:/firefish/files", "files:/firefish/files",
"/docker/firefish/config:/firefish/.config:ro", "config:/firefish/.config:ro",
] ]
[services.redis] [services.redis]
@ -18,7 +22,7 @@ image = "redis"
container_name = "redis-firefish" container_name = "redis-firefish"
restart = "unless-stopped" restart = "unless-stopped"
networks = ["firefish"] networks = ["firefish"]
volumes = ["/docker/firefish/redis:/data"] volumes = ["redis:/data"]
[services.sonic] [services.sonic]
image = "valeriansaliou/sonic:v1.4.0" image = "valeriansaliou/sonic:v1.4.0"
@ -26,8 +30,8 @@ container_name = "sonic-firefish"
logging = { driver = "none" } logging = { driver = "none" }
networks = ["firefish"] networks = ["firefish"]
volumes = [ volumes = [
"/docker/firefish/sonic:/var/lib/sonic/store", "sonic:/var/lib/sonic/store",
"/docker/firefish/sonic/config.cfg:/etc/sonic.cfg", "/mnt/Storage/docker/firefish-sonic/config.cfg:/etc/sonic.cfg",
] ]
env_file = ".env" env_file = ".env"

View file

@ -1,11 +1,14 @@
[volumes]
data = {}
[services.forgejo] [services.forgejo]
image = "git.korhonen.cc/functionalhacker/forgejo-asciidoc" image = "git.korhonen.cc/functionalhacker/forgejo-asciidoc"
container_name = "forgejo" container_name = "forgejo"
environment = ["TZ=Europe/Helsinki", "USER_UID=1000", "USER_GID=1000"] environment = ["TZ=Europe/Helsinki"]
restart = "unless-stopped" restart = "unless-stopped"
networks = ["postgres", "proxy"] networks = ["postgres", "proxy"]
ports = ["22:22"] ports = ["22:22"]
volumes = ["/docker/forgejo:/data", "/etc/localtime:/etc/localtime:ro"] volumes = ["data:/data", "/etc/localtime:/etc/localtime:ro"]
[networks.postgres] [networks.postgres]
external = true external = true

View file

@ -1,13 +1,13 @@
[volumes]
config = {}
[services.freshrss] [services.freshrss]
image = "linuxserver/freshrss" image = "linuxserver/freshrss"
container_name = "freshrss" container_name = "freshrss"
restart = "unless-stopped" restart = "unless-stopped"
networks = ["freshrss", "postgres", "proxy"] networks = ["freshrss", "postgres", "proxy"]
environment = ["PUID=1000", "PGID=985", "TZ=Europe/Helsinki"] environment = ["PUID=1000", "PGID=985", "TZ=Europe/Helsinki"]
volumes = [ volumes = ["config:/config", "/etc/localtime:/etc/localtime:ro"]
"/docker/freshrss/freshrss:/config",
"/etc/localtime:/etc/localtime:ro",
]
[networks.freshrss] [networks.freshrss]
external = false external = false

View file

@ -1,10 +1,11 @@
[volumes]
config = {}
data = {}
[services.headscale] [services.headscale]
image = "headscale/headscale" image = "headscale/headscale:0"
container_name = "headscale" container_name = "headscale"
volumes = [ volumes = ["config:/etc/headscale", "data:/var/lib/headscale"]
"/docker/headscale/config:/etc/headscale/",
"/docker/headscale/data:/var/lib/headscale",
]
ports = ["3478:3478/udp"] ports = ["3478:3478/udp"]
command = "headscale serve" command = "headscale serve"
restart = "unless-stopped" restart = "unless-stopped"

View file

@ -1,12 +1,14 @@
[volumes]
hass = {}
rhasspy = {}
mosquitto = {}
[services.home-assistant] [services.home-assistant]
container_name = "home-assistant" container_name = "home-assistant"
image = "homeassistant/home-assistant" image = "homeassistant/home-assistant"
environment = ["TZ=Europe/Helsinki"] environment = ["TZ=Europe/Helsinki"]
devices = ["/dev/ttyACM0"] devices = ["/dev/ttyACM0"]
volumes = [ volumes = ["hass:/config", "/etc/localtime:/etc/localtime:ro"]
"/docker/homeautomation/home-assistant:/config",
"/etc/localtime:/etc/localtime:ro",
]
restart = "unless-stopped" restart = "unless-stopped"
networks = ["homeautomation", "postgres", "proxy"] networks = ["homeautomation", "postgres", "proxy"]
ports = ["8123:8123", "8300:8300"] ports = ["8123:8123", "8300:8300"]
@ -20,7 +22,7 @@ environment = ["TZ=Europe/Helsinki"]
ports = ["1883:1883", "8866:8866"] ports = ["1883:1883", "8866:8866"]
networks = ["homeautomation"] networks = ["homeautomation"]
volumes = [ volumes = [
"/docker/homeautomation/mosquitto:/mosquitto", "mosquitto:/mosquitto",
"/etc/localtime:/etc/localtime:ro", "/etc/localtime:/etc/localtime:ro",
] ]
restart = "unless-stopped" restart = "unless-stopped"
@ -29,7 +31,7 @@ restart = "unless-stopped"
container_name = "rhasspy" container_name = "rhasspy"
image = "rhasspy/rhasspy" image = "rhasspy/rhasspy"
command = "--profile en --user-profiles /profiles" command = "--profile en --user-profiles /profiles"
volumes = ["/docker/homeautomation/rhasspy:/profiles"] volumes = ["rhasspy:/profiles"]
environment = ["TZ=Europe/Helsinki"] environment = ["TZ=Europe/Helsinki"]
ports = ["12101:12101"] ports = ["12101:12101"]
networks = ["homeautomation"] networks = ["homeautomation"]

View file

@ -1,3 +1,13 @@
[volumes]
config = {}
cache = {}
[volumes.media]
external = true
[volumes.nextcloud_data]
external = true
[services.jellyfin] [services.jellyfin]
image = "jellyfin/jellyfin" image = "jellyfin/jellyfin"
container_name = "jellyfin" container_name = "jellyfin"
@ -6,10 +16,10 @@ ports = ["8096:8096"]
networks = ["proxy", "authentik"] networks = ["proxy", "authentik"]
restart = "unless-stopped" restart = "unless-stopped"
volumes = [ volumes = [
"/docker/jellyfin/config:/config", "config:/config",
"/docker/jellyfin/cache:/cache", "cache:/cache",
"/mnt/Storage/Media:/media", "media:/media",
"/mnt/Storage/Nextcloud/FunctionalHacker/files/Media/Music:/media/Music", "/mnt/Storage/docker/volumes/nextcloud_data/FunctionalHacker/files/Media/Music:/media/Music",
"/etc/localtime:/etc/localtime:ro", "/etc/localtime:/etc/localtime:ro",
] ]
devices = [ devices = [

View file

@ -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

View file

@ -1,10 +1,10 @@
[services] [volumes]
config = {}
[services.mumble] [services.mumble]
container_name = "mumble" container_name = "mumble"
image = "phlak/mumble" image = "phlak/mumble"
user = "1000:985"
environment = ["TZ=Europe/Helsinki"] environment = ["TZ=Europe/Helsinki"]
network_mode = "host" 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" restart = "unless-stopped"

View file

@ -1,12 +1,17 @@
[volumes.nextcloud_config]
external = true
[volumes.nextcloud_data]
external = true
[services.nextcloud] [services.nextcloud]
image = "nextcloud:fpm-alpine" image = "nextcloud:fpm-alpine"
container_name = "nextcloud" container_name = "nextcloud"
restart = "unless-stopped" restart = "unless-stopped"
user = "82:82"
networks = ["nextcloud", "postgres", "proxy"] networks = ["nextcloud", "postgres", "proxy"]
volumes = [ volumes = [
"/docker/nextcloud:/var/www/html:z", "nextcloud_config:/var/www/html",
"/mnt/Storage/Nextcloud:/var/www/html/data", "nextcloud_data:/var/www/html/data",
"/etc/localtime:/etc/localtime:ro", "/etc/localtime:/etc/localtime:ro",
] ]
environment = [ environment = [

View file

@ -1,4 +1,6 @@
[services] [volumes]
config = {}
dnsmasq = {}
[services.pihole] [services.pihole]
container_name = "pihole" container_name = "pihole"
@ -6,8 +8,8 @@ image = "pihole/pihole"
ports = ["53:53/tcp", "53:53/udp", "67:67/udp", "8069:80/tcp"] ports = ["53:53/tcp", "53:53/udp", "67:67/udp", "8069:80/tcp"]
networks = ["proxy"] networks = ["proxy"]
volumes = [ volumes = [
"/docker/pihole/pihole:/etc/pihole/", "config:/etc/pihole/",
"/docker/pihole/dnsmasq:/etc/dnsmasq.d/", "dnsmasq:/etc/dnsmasq.d/",
] ]
dns = ["127.0.0.1", "1.1.1.1"] dns = ["127.0.0.1", "1.1.1.1"]
cap_add = ["NET_ADMIN"] cap_add = ["NET_ADMIN"]
@ -17,7 +19,5 @@ restart = "unless-stopped"
TZ = "Europe/Helsinki" TZ = "Europe/Helsinki"
WEBPASSWORD = "${WEBPASSWORD}" WEBPASSWORD = "${WEBPASSWORD}"
[networks]
[networks.proxy] [networks.proxy]
external = true external = true

View file

@ -1,3 +1,6 @@
[volumes]
data = {}
[services.postgres] [services.postgres]
container_name = "postgres" container_name = "postgres"
image = "postgres:16" image = "postgres:16"
@ -5,7 +8,7 @@ environment = ["TZ=Europe/Helsinki"]
ports = ["127.0.0.1:5432:5432"] ports = ["127.0.0.1:5432:5432"]
networks = ["postgres"] networks = ["postgres"]
volumes = [ volumes = [
"/docker/postgres:/var/lib/postgresql/data", "data:/var/lib/postgresql/data",
"/etc/localtime:/etc/localtime:ro", "/etc/localtime:/etc/localtime:ro",
] ]
restart = "unless-stopped" restart = "unless-stopped"

View file

@ -1,10 +1,13 @@
[volumes]
config = {}
[services.searx] [services.searx]
container_name = "searx" container_name = "searx"
image = "searxng/searxng" image = "searxng/searxng"
restart = "unless-stopped" restart = "unless-stopped"
networks = ["searx", "proxy"] networks = ["searx", "proxy"]
volumes = [ volumes = [
"/docker/searx:/etc/searxng", "config:/etc/searxng",
#"/docker/searx/logo.png:/usr/local/searxng/searx/static/themes/simple/img/searxng.png:ro" #"/docker/searx/logo.png:/usr/local/searxng/searx/static/themes/simple/img/searxng.png:ro"
] ]
environment = ["SEARXNG_BASE_URL=https://search.korhonen.cc/"] environment = ["SEARXNG_BASE_URL=https://search.korhonen.cc/"]

View file

@ -1,7 +1,7 @@
[services.grafana] [services.grafana]
image = "grafana/grafana" image = "grafana/grafana"
container_name = "grafana" container_name = "grafana"
volumes = ["/docker/stats/grafana:/var/lib/grafana"] volumes = ["grafana:/var/lib/grafana"]
networks = ["stats", "proxy"] networks = ["stats", "proxy"]
user = "1000:984" user = "1000:984"
env_file = [".env"] env_file = [".env"]

View file

@ -1,11 +1,15 @@
[volumes]
config = {}
picons = {}
[services.tvheadend] [services.tvheadend]
image = "linuxserver/tvheadend" image = "linuxserver/tvheadend"
container_name = "tvheadend" container_name = "tvheadend"
environment = ["TZ=Europe/Helsinki", "PUID=1000", "PGID=985"] environment = ["TZ=Europe/Helsinki", "PUID=1000", "PGID=985"]
volumes = [ volumes = [
"/docker/tvheadend:/config", "config:/config",
"picons:/picons",
"/mnt/Storage/Media/PVR:/recordings", "/mnt/Storage/Media/PVR:/recordings",
"/mnt/Storage/picons:/picons",
"/etc/localtime:/etc/localtime:ro", "/etc/localtime:/etc/localtime:ro",
] ]
ports = ["9981:9981", "9982:9982"] ports = ["9981:9981", "9982:9982"]

View file

@ -1,8 +1,11 @@
[volumes]
data = {}
[services.woodpecker] [services.woodpecker]
image = "woodpeckerci/woodpecker-server" image = "woodpeckerci/woodpecker-server"
container_name = "woodpecker" container_name = "woodpecker"
restart = "unless-stopped" restart = "unless-stopped"
volumes = ["/docker/woodpecker/:/var/lib/woodpecker/"] volumes = ["data:/var/lib/woodpecker"]
env_file = [".env"] env_file = [".env"]
environment = [ environment = [
"WOODPECKER_OPEN=true", "WOODPECKER_OPEN=true",
@ -24,10 +27,7 @@ restart = "unless-stopped"
depends_on = ["woodpecker"] depends_on = ["woodpecker"]
volumes = ["/var/run/docker.sock:/var/run/docker.sock"] volumes = ["/var/run/docker.sock:/var/run/docker.sock"]
env_file = [".env"] env_file = [".env"]
environment = [ environment = ["WOODPECKER_SERVER=woodpecker:9000", "WOODPECKER_AGENT_SECRET"]
"WOODPECKER_SERVER=woodpecker:9000",
"WOODPECKER_AGENT_SECRET",
]
[networks.proxy] [networks.proxy]
external = true external = true