I am also using docker and the issue isn’t coming from there.
If you go in your hangfire database and check the “Set” table, you should see your recurring job. If you see that the “score” is at -1, it means that it’s not going to get picked up by your workers and that’s your problem. The score is put at -1 when there’s an error while queuing the job (i think).
You’ll have to create a csproj containing all the interfaces of your jobs. Then import that csproj into all your worker projects and use the interfaces to enqueue the jobs. That way, every worker “knows” the jobs of the other workers and they will be able to properly put them in a queue.
example of a recurring job flow : The job starts in the database. Then it can be picked up by ANY worker from the database and put into a queue. Then only worker of that queue process that job.
The problems comes because your worker doesn’t have the assembly required to properly enqueue the job of the other worker. (hangfire search the job by reflection) That’s also why the job stops working but randomly. If the job is picked up by the right worker, it has the assembly and can properly queue it but in the case where your job en up in the wrong worker, it’ll just silently fail it and never requeue it.