Configure Docker Compose through .env for Arcane

docker-compose.yml now reads every host-specific value (paths, user,
port, network, time zone) from .env with the previous values as
defaults. .env.example documents them; .env stays out of Git.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
cdnutterandClaude Opus 5.5 committed 2026-09-30 10:09:59 -07:00
1 parent 428935dc58
commit 90f5d88903
5 files changed
+88 -30

No files matched your search

+23 -17
View File
@@ -1,28 +1,34 @@
# Every host-specific value comes from .env (see .env.example), so the
# stack can be built and kept in sync by Arcane (or any Compose host)
# without editing this file. Defaults below apply when a variable is unset.
services:
playlink:
build: .
image: playlink:latest
container_name: playlink
build:
context: .
args:
VERSION: ${PLAYLINK_VERSION:-dev}
image: ${PLAYLINK_IMAGE:-playlink:latest}
container_name: ${PLAYLINK_CONTAINER_NAME:-playlink}
# Run as the user that owns your music (Unraid: nobody:users = 99:100).
user: "99:100"
user: "${PUID:-99}:${PGID:-100}"
ports:
- "7480:7480"
- "${PLAYLINK_PORT:-7480}:7480"
environment:
- TZ=America/Los_Angeles
- PLAYLINK_ALLOWED_ROOTS=/data
# Set to true when serving over HTTPS (e.g. behind a reverse proxy).
- PLAYLINK_SECURE_COOKIES=false
TZ: ${TZ:-America/Los_Angeles}
PLAYLINK_ALLOWED_ROOTS: ${PLAYLINK_ALLOWED_ROOTS:-/data}
PLAYLINK_SECURE_COOKIES: ${PLAYLINK_SECURE_COOKIES:-false}
PLAYLINK_LOG_LEVEL: ${PLAYLINK_LOG_LEVEL:-info}
volumes:
- /mnt/user/Aqua/playlink:/config
# IMPORTANT: mount ONE folder that contains BOTH libraries. Hardlinks
- ${PLAYLINK_CONFIG_PATH:-/mnt/user/Aqua/playlink}:/config
# IMPORTANT: ONE folder that contains BOTH libraries. Hardlinks
# cannot cross Docker bind mounts, even on the same disk.
# master (Albums) -> /data/Music/Albums
# slave (Singles) -> /data/Music/Instances/cdnutter/Singles
- /mnt/user/Sapphire:/data
restart: unless-stopped
- ${PLAYLINK_DATA_PATH:-/mnt/user/Sapphire}:/data
restart: ${PLAYLINK_RESTART:-unless-stopped}
networks:
- chromanet
- playlink
networks:
chromanet:
playlink:
# An existing Docker network (e.g. the one your reverse proxy uses).
name: ${PLAYLINK_NETWORK:-chromanet}
external: true