Skip to content

[BUG] Auto-Reload not picking up changes in directory specified in 'SWAG_AUTORELOAD_WATCHLIST' #557

@srasul

Description

@srasul

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

For my swag I have Auto-Reload set to true and have added the directory /config/nginx/proxy-confs to the SWAG_AUTORELOAD_WATCHLIST.

Then I docker exec bash into the swag container and modify a file in the directory:

  • /config/nginx -> reloads nginx
  • /config/nginx/proxy-confs -> does not reload the nginx

One thing to note is that we have a my.subdomain.conf file that is docker-bind-volume mapped to the directory /config/nginx/proxy-confs.

Expected Behavior

Nginx to reload when a subdomain.conf file is changed.

Steps To Reproduce

We are using docker compose and here is our docker configs:

services:
  swag:
    image: lscr.io/linuxserver/swag:latest
    container_name: swag
    cap_add:
      - NET_ADMIN
    networks:
      - example_network
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
      - URL=example.app
      - VALIDATION=http
      - SUBDOMAINS=d1,d2,d3
      - ONLY_SUBDOMAINS=true
      - SWAG_AUTORELOAD=true
      - SWAG_AUTORELOAD_WATCHLIST=/config/nginx/proxy-confs  
    volumes:
      - ./volumes/swag/d1.subdomain.conf:/config/nginx/proxy-confs/d1.subdomain.conf
      - ./volumes/swag/d2.subdomain.conf:/config/nginx/proxy-confs/d2.subdomain.conf
      - ./volumes/swag/d3.subdomain.conf:/config/nginx/proxy-confs/d3.subdomain.conf
    ports:
      - 443:443
      - 80:80 #optional
    restart: unless-stopped

After everything is up and running, I do:

docker compose exec swag bash
cd /config/nginx
# modify a nginx.conf file, adding just a whitespace char
# notice that nginx configs are reloaded
cd /config/nginx/proxy-confs
# modify the file d1.subdomain.conf
# notice that nginx configs are not reloaded

Environment

- OS:Ubuntu 24.04.2 LTS
- How docker service was installed: via [official docker website instructions](https://docs.docker.com/engine/install/ubuntu/)

docker version: `Docker version 28.0.1, build 068a01e`
compose version: `Docker Compose version v2.33.1`

CPU architecture

x86-64

Docker creation

`docker compose up -d`

Container logs

`docker logs swag`

swag  | [migrations] started
swag  | [migrations] 01-nginx-site-confs-default: skipped
swag  | [migrations] 02-swag-old-certbot-paths: skipped
swag  | [migrations] done
swag  | ───────────────────────────────────────
swag  | 
swag  |       ██╗     ███████╗██╗ ██████╗
swag  |       ██║     ██╔════╝██║██╔═══██╗
swag  |       ██║     ███████╗██║██║   ██║
swag  |       ██║     ╚════██║██║██║   ██║
swag  |       ███████╗███████║██║╚██████╔╝
swag  |       ╚══════╝╚══════╝╚═╝ ╚═════╝
swag  | 
swag  |    Brought to you by linuxserver.io
swag  | ───────────────────────────────────────
swag  | 
swag  | To support the app dev(s) visit:
swag  | Certbot: https://supporters.eff.org/donate/support-work-on-certbot
swag  | 
swag  | To support LSIO projects visit:
swag  | https://www.linuxserver.io/donate/
swag  | 
swag  | ───────────────────────────────────────
swag  | GID/UID
swag  | ───────────────────────────────────────
swag  | 
swag  | User UID:    1000
swag  | User GID:    1000
swag  | ───────────────────────────────────────
swag  | Linuxserver.io version: 3.3.0-ls371
swag  | Build-date: 2025-03-17T13:53:41+00:00
swag  | ───────────────────────────────────────
swag  |     
swag  | using keys found in /config/keys
swag  | Variables set:
swag  | PUID=1000
swag  | PGID=1000
swag  | TZ=Etc/UTC
swag  | URL=********************
swag  | SUBDOMAINS=*****************
swag  | EXTRA_DOMAINS=
swag  | ONLY_SUBDOMAINS=true
swag  | VALIDATION=http
swag  | CERTPROVIDER=
swag  | DNSPLUGIN=
swag  | EMAIL=
swag  | STAGING=
swag  | 
swag  | Using Let's Encrypt as the cert provider
swag  | SUBDOMAINS entered, processing
swag  | Sub-domains processed are: ******************
swag  | No e-mail address entered or address invalid
swag  | http validation is selected
swag  | Certificate exists; parameters unchanged; starting nginx
swag  | The cert does not expire within the next day. Letting the cron script handle the renewal attempts overnight (2:08am).
swag  | [custom-init] No custom files found, skipping...
swag  | Auto-reload: Watching the following folders for changes to .conf files:
swag  | /config/nginx
swag  | /config/nginx/proxy-confs
swag  | [ls.io-init] done.
swag  | Server ready

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions