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

View file

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

View file

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

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]
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"

View file

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

View file

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

View file

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

View file

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

View file

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

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]
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"

View file

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

View file

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

View file

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

View file

@ -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/"]

View file

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

View file

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

View file

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