edv / docker-spotweb

Dockerfile to easily set up Spotweb using Docker on the Raspberry Pi (or any compatible arm chipset) and regular x86 chipsets
MIT License
30 stars 20 forks source link

Container from 2 days ago not pulling releases #52

Closed DrFrankensteinUK closed 1 year ago

DrFrankensteinUK commented 1 year ago

Hey

Your update from 3 weeks back with the Cron schedule has been working perfectly – however it seems like the version pushed 2 days ago has a bug as upon setup nothing is pulled. I tested this myself and had a couple of people on Discord with exactly the same issue.

I can spin up fresh containers to help find the issue to help out. Not sure if you have experienced any problems at all?

edv commented 1 year ago

Can you maybe provide a bit more information? E.g. does this only occur on a fresh installation? or did your already set-up and running environment stop updating? or did you maybe change the newly introduced CRON_INTERVAL env. variable? (and with what value)

edv commented 1 year ago

Follow up with my findings so far:

Do you maybe see errors in the log while running Spotweb? or see the line "NNTP server not configured, skipping retrieval of new headers" (which would suggest no NNTP server is configured, or at least cannot be seen by the update script that is used)

DrFrankensteinUK commented 1 year ago

Hi - I will investigate a bit further during the day tomorrow with a fresh install and see if the issue persists at all. I had seen on my Personal setup nothing pulled for around 10 days (I don't often go on the UI) and then had a couple of people with fresh installations on Discord with issues getting things pulled.

We let you know tomorrow :)

PeebzNL commented 1 year ago

I was one of "the people with issues"; the latest version didn't pull spots/retriever didn't fire up. Previous version (sha-7da5664, with cron-update?) pulled the spots for 2 days. But fixed by dr.frankenstein. Mariadb now fully filled with spots. But the update is still every 5 minutes, independend of crons-settin ('0 ' or '/60 *')

edv commented 1 year ago

@PeebzNL can you check the output when you start the container? It should mention "Spotweb Update Cronjob" with the value below it, e.g. "Update interval: /1 *"

As stated in the README, the default is: /5 *

If you change the CRON_INTERVAL env variable (to the example you gave, e.g. 0 (your example with the 0 was missing a * by the way)) it should be shown during startup

PeebzNL commented 1 year ago

There is no mention of cronjob in the log after stop/start of container. None whatsoever.

DrFrankensteinUK commented 1 year ago

OK I did a whole write-up on the back of multiple installs and then realised I may be at fault so deleted it!

This is completely my fault! I formatted the cron incorrectly!

CRON_INTERVAL='*/7 * * * *' vs CRON_INTERVAL=*/7 * * * *

Sorry!

-

On my multiple installs I do see that no backfill takes place before the day of install - I will update in the other issue I raised..

DrFrankensteinUK commented 1 year ago

Not directly related, but the official MariaDB doesn't seem to have a health check built in causing the database to not be available upon first start up. So likely going to move to the LinuxServer build to see if this mitigates the initial start up issue

Final compose is

services:
  spotweb:
    image: erikdevries/spotweb
    container_name: spotweb
    environment:
      - TZ=Europe/London
      - DB_PORT=3306
      - DB_HOST=172.20.0.1
      - DB_NAME=spotweb
      - DB_USER=MYSQL_USER
      - DB_PASS=MYSQL_PASSWORD
      - CRON_INTERVAL=*/5 * * * *
    ports:
      - 8085:80
    network_mode: synobridge
    depends_on:
      mariadb:
        condition: service_healthy
        restart: true
    restart: unless-stopped

  mariadb:
    image: linuxserver/mariadb:latest
    container_name: mariadb
    environment:
      - MYSQL_ROOT_PASSWORD=StRoNgPa55WoRd
      - PUID=YourPUID
      - PGID=YourPGID
      - TZ=YourTimezone
      - MYSQL_DATABASE=spotweb
      - MYSQL_USER=Ausername
      - MYSQL_PASSWORD=AnotherPassword
    volumes:
      - /volume1/docker/mariadb:/config
    ports:
      - 3306:3306
    network_mode: synobridge
    healthcheck:
      test: ["CMD", "mysqladmin" ,"ping", "-h", "172.20.0.1"]
      timeout: 20s
      retries: 10
    restart: unless-stopped
PeebzNL commented 1 year ago

I've changed the cron-setting, quotes removed. Now value is 0 (incl. stop/start container). But retriever still fires up every 5 minutes. Log doesn't mention cron-settings. Only:
2023/10/13 16:45:33,stderr,services-up: info: copying legacy longrun cron (no readiness notification)

PeebzNL commented 1 year ago

For reference: the spotweb version I am running is sha-7da5664

edv commented 1 year ago

Not directly related, but the official MariaDB doesn't seem to have a health check built in causing the database to not be available upon first start up. So likely going to move to the LinuxServer build to see if this mitigates the initial start up issue

I'm curious what problem you run into by this lack of health check, as the Spotweb container has a built in polling mechanism that tries to connect to the MySQL server until it is ready (see "Waiting (5 seconds) for database connection at host 'mysql:3306'..." in the logs). Let me know, so the Spotweb image can maybe be improved to handle unavailable database servers in a better way.

edv commented 1 year ago

I've changed the cron-setting, quotes removed. Now value is 0 (incl. stop/start container). But retriever still fires up every 5 minutes. Log doesn't mention cron-settings. Only: 2023/10/13 16:45:33,stderr,services-up: info: copying legacy longrun cron (no readiness notification)

I just checked and the release you use does not yet include this feature, you have to use at least tag sha-b9190aa to be able to configure the update interval (see https://github.com/edv/docker-spotweb/commit/b9190aab470f3c2fc0194fb7b86bcea98f6fea56 for details)

PeebzNL commented 1 year ago

That explains it, Switched to -latest- yesterday. It’s running smoothly now.