[reap_children] infinite loop - docker-compose issue

Hi, I am very new to docker and even though I read the https://git.tt-rss.org/fox/ttrss-docker-compose/src/master/README.md I am still a bit confused. I cloned the repository, then copied env-dist to env and edited it slightly:

# Copy this file to .env before building the container.
# Put any local modifications here.

POSTGRES_USER=postgres
POSTGRES_PASSWORD=password

OWNER_UID=1000
OWNER_GID=1000

# You can keep this as localhost unless you want to use the ssl sidecar
# container (I suggest terminating ssl on the reverse proxy instead).
HTTP_HOST=localhost

# You will likely need to set this to the correct value, see README.md
# for more information.
SELF_URL_PATH=http://127.0.0.1:8280/tt-rss

# bind exposed port to 127.0.0.1 by default in case reverse proxy is used.
# if you plan to run the container standalone and need origin port exposed
# use next HTTP_PORT definition (or remove "127.0.0.1:").
#HTTP_PORT=127.0.0.1:8280
HTTP_PORT=8280

I
Describe the problem you’re having:

After i run the “sudo docker-compose up --build” command i get

Building app
Step 1/12 : FROM alpine:3.12
 ---> 389fef711851
Step 2/12 : EXPOSE 9000/tcp
 ---> Using cache
 ---> 483194cc0e63
Step 3/12 : RUN apk add --no-cache dcron php7 php7-fpm  php7-pdo php7-gd php7-pgsql php7-pdo_pgsql php7-mbstring        php7-intl php7-xml php7-curl php7-session      php7-dom php7-fileinfo php7-json         php7-pcntl php7-posix php7-zip php7-openssl     git postgresql-client sudo
 ---> Using cache
 ---> ff10405289a2
Step 4/12 : ADD startup.sh /
 ---> Using cache
 ---> f9729fead732
Step 5/12 : ADD updater.sh /
 ---> Using cache
 ---> 580f72c4bc20
Step 6/12 : ADD index.php /
 ---> Using cache
 ---> 1ccdbc933170
Step 7/12 : ADD dcron.sh /
 ---> Using cache
 ---> e3fd0c090c94
Step 8/12 : ADD backup.sh /etc/periodic/weekly/backup
 ---> Using cache
 ---> 0463fea7bb24
Step 9/12 : RUN sed -i.bak 's/^listen = 127.0.0.1:9000/listen = 9000/' /etc/php7/php-fpm.d/www.conf
 ---> Using cache
 ---> ba89e1b38325
Step 10/12 : RUN sed -i.bak 's/\(memory_limit =\) 128M/\1 256M/' /etc/php7/php.ini
 ---> Using cache
 ---> 910f35ca8c9c
Step 11/12 : RUN mkdir -p /var/www
 ---> Using cache
 ---> d3e29788a640
Step 12/12 : CMD /startup.sh
 ---> Using cache
 ---> b80aa48c5dac
Successfully built b80aa48c5dac
Successfully tagged ttrss-docker_app:latest
Building backups
Step 1/12 : FROM alpine:3.12
 ---> 389fef711851
Step 2/12 : EXPOSE 9000/tcp
 ---> Using cache
 ---> 483194cc0e63
Step 3/12 : RUN apk add --no-cache dcron php7 php7-fpm  php7-pdo php7-gd php7-pgsql php7-pdo_pgsql php7-mbstring        php7-intl php7-xml php7-curl php7-session      php7-dom php7-fileinfo php7-json         php7-pcntl php7-posix php7-zip php7-openssl     git postgresql-client sudo
 ---> Using cache
 ---> ff10405289a2
Step 4/12 : ADD startup.sh /
 ---> Using cache
 ---> f9729fead732
Step 5/12 : ADD updater.sh /
 ---> Using cache
 ---> 580f72c4bc20
Step 6/12 : ADD index.php /
 ---> Using cache
 ---> 1ccdbc933170
Step 7/12 : ADD dcron.sh /
 ---> Using cache
 ---> e3fd0c090c94
Step 8/12 : ADD backup.sh /etc/periodic/weekly/backup
 ---> Using cache
 ---> 0463fea7bb24
Step 9/12 : RUN sed -i.bak 's/^listen = 127.0.0.1:9000/listen = 9000/' /etc/php7/php-fpm.d/www.conf
 ---> Using cache
 ---> ba89e1b38325
Step 10/12 : RUN sed -i.bak 's/\(memory_limit =\) 128M/\1 256M/' /etc/php7/php.ini
 ---> Using cache
 ---> 910f35ca8c9c
Step 11/12 : RUN mkdir -p /var/www
 ---> Using cache
 ---> d3e29788a640
Step 12/12 : CMD /startup.sh
 ---> Using cache
 ---> b80aa48c5dac
Successfully built b80aa48c5dac
Successfully tagged ttrss-docker_backups:latest
Building updater
Step 1/12 : FROM alpine:3.12
 ---> 389fef711851
Step 2/12 : EXPOSE 9000/tcp
 ---> Using cache
 ---> 483194cc0e63
Step 3/12 : RUN apk add --no-cache dcron php7 php7-fpm  php7-pdo php7-gd php7-pgsql php7-pdo_pgsql php7-mbstring        php7-intl php7-xml php7-curl php7-session      php7-dom php7-fileinfo php7-json         php7-pcntl php7-posix php7-zip php7-openssl     git postgresql-client sudo
 ---> Using cache
 ---> ff10405289a2
Step 4/12 : ADD startup.sh /
 ---> Using cache
 ---> f9729fead732
Step 5/12 : ADD updater.sh /
 ---> Using cache
 ---> 580f72c4bc20
Step 6/12 : ADD index.php /
 ---> Using cache
 ---> 1ccdbc933170
Step 7/12 : ADD dcron.sh /
 ---> Using cache
 ---> e3fd0c090c94
Step 8/12 : ADD backup.sh /etc/periodic/weekly/backup
 ---> Using cache
 ---> 0463fea7bb24
Step 9/12 : RUN sed -i.bak 's/^listen = 127.0.0.1:9000/listen = 9000/' /etc/php7/php-fpm.d/www.conf
 ---> Using cache
 ---> ba89e1b38325
Step 10/12 : RUN sed -i.bak 's/\(memory_limit =\) 128M/\1 256M/' /etc/php7/php.ini
 ---> Using cache
 ---> 910f35ca8c9c
Step 11/12 : RUN mkdir -p /var/www
 ---> Using cache
 ---> d3e29788a640
Step 12/12 : CMD /startup.sh
 ---> Using cache
 ---> b80aa48c5dac
Successfully built b80aa48c5dac
Successfully tagged ttrss-docker_updater:latest
Building web
Step 1/2 : FROM abiosoft/caddy:no-stats
 ---> 1545342f788d
Step 2/2 : COPY Caddyfile /etc/
 ---> Using cache
 ---> 6aa227c7afc5
Successfully built 6aa227c7afc5
Successfully tagged ttrss-docker_web:latest
Starting ttrss-docker_db_1 ... done
Starting ttrss-docker_backups_1 ... done
Recreating ttrss-docker_app_1   ... done
Recreating ttrss-docker_updater_1 ... done
Recreating ttrss-docker_web_1     ... done
Attaching to ttrss-docker_db_1, ttrss-docker_backups_1, ttrss-docker_app_1, ttrss-docker_web_1, ttrss-docker_updater_1
db_1       |
db_1       | PostgreSQL Database directory appears to contain a database; Skipping initialization
db_1       |
db_1       | 2020-12-30 16:21:07.500 UTC [1] LOG:  starting PostgreSQL 12.5 on x86_64-pc-linux-musl, compiled by gcc (Alpine 9.3.0) 9.3.0, 64-bit
backups_1  | /usr/sbin/crond 4.5 dillon's cron daemon, started with loglevel notice
db_1       | 2020-12-30 16:21:07.501 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
web_1      | Activating privacy features... done.
web_1      | 2020/12/30 16:21:16 [INFO][cache:0xc000104870] Started certificate maintenance routine
db_1       | 2020-12-30 16:21:07.501 UTC [1] LOG:  listening on IPv6 address "::", port 5432
app_1      | db:5432 - accepting connections
web_1      |
web_1      | Serving HTTP on port 2015
web_1      | http://0.0.0.0:2015
web_1      |
web_1      | 2020/12/30 16:21:16 [INFO] Serving http://0.0.0.0:2015
db_1       | 2020-12-30 16:21:07.765 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
db_1       | 2020-12-30 16:21:08.297 UTC [21] LOG:  database system was shut down at 2020-12-30 16:18:33 UTC
app_1      | updating tt-rss source in /var/www/html/tt-rss from https://git.tt-rss.org/fox/tt-rss.git...
db_1       | 2020-12-30 16:21:08.631 UTC [1] LOG:  database system is ready to accept connections
app_1      | From https://git.tt-rss.org/fox/tt-rss
app_1      |  * branch                master     -> FETCH_HEAD
app_1      | Already up to date.
app_1      | updating plugins.local/nginx_xaccel...
app_1      | From https://git.tt-rss.org/fox/ttrss-nginx-xaccel
app_1      |  * branch            master     -> FETCH_HEAD
app_1      | Already up to date.
app_1      | NOTICE:  extension "pg_trgm" already exists, skipping
app_1      |  schema_version
app_1      | ----------------
app_1      |             140
app_1      | (1 row)
app_1      |
app_1      | [16:21:13/54] Lock: update.lock
app_1      | [16:21:13/54] Checking for updates (pgsql)...
app_1      | [16:21:13/54] Database schema is already at latest version.
app_1      | [30-Dec-2020 16:21:14] NOTICE: [pool www] 'user' directive is ignored when FPM is not running as root
app_1      | [30-Dec-2020 16:21:14] NOTICE: [pool www] 'group' directive is ignored when FPM is not running as root
updater_1  | id: unknown user app
updater_1  | db:5432 - accepting connections
updater_1  | [16:21:46/13] Spawn interval: 120 sec
updater_1  | [16:21:46/13] [MASTER] installing shutdown handlers
updater_1  | [16:21:46/13] [MASTER] spawned client 0 [PID:15]...
updater_1  | [16:21:46/13] [MASTER] spawned client 1 [PID:17]...
updater_1  | [16:21:47/16] Using task id 0
updater_1  | [16:21:47/16] Lock: update_daemon-15.lock
updater_1  | [16:21:47/18] Using task id 1
updater_1  | [16:21:47/18] Lock: update_daemon-17.lock
updater_1  | [16:21:47/18] Waiting before update (5)
updater_1  | [16:21:47/16] Waiting before update (0)
updater_1  | [16:21:47/16] Scheduled 0 feeds to update...
updater_1  | [16:21:47/16] Sending digests, batch of max 15 users, headline limit = 1000
updater_1  | [16:21:47/16] All done.
updater_1  | [16:21:47/16] Expired cache/export: removed 0 files.
updater_1  | [16:21:47/16] Expired cache/feeds: removed 0 files.
updater_1  | [16:21:47/16] Expired cache/images: removed 0 files.
updater_1  | [16:21:47/16] Expired cache/upload: removed 0 files.
updater_1  | [16:21:47/16] Removed 0 old lock files.
updater_1  | [16:21:47/16] Removing old error log entries...
updater_1  | [16:21:47/16] Removing old archived feeds...
updater_1  | [16:21:47/16] Purged 0 orphaned posts.
updater_1  | [16:21:48/13] [reap_children] child 15 reaped.
updater_1  | [16:21:48/13] [SIGCHLD] jobs left: 1
updater_1  | [16:21:52/18] Scheduled 0 feeds to update...
updater_1  | [16:21:52/18] Sending digests, batch of max 15 users, headline limit = 1000
updater_1  | [16:21:52/18] All done.
updater_1  | [16:21:53/13] [reap_children] child 17 reaped.
updater_1  | [16:21:53/13] [SIGCHLD] jobs left: 0
updater_1  | [16:22:46/13] [MASTER] active jobs: 0, next spawn at 60 sec.
updater_1  | [16:23:46/13] [MASTER] active jobs: 0, next spawn at 0 sec.
updater_1  | [16:23:47/13] [MASTER] spawned client 0 [PID:21]...
updater_1  | [16:23:47/13] [MASTER] spawned client 1 [PID:23]...
updater_1  | [16:23:47/22] Using task id 0
updater_1  | [16:23:47/22] Lock: update_daemon-21.lock
updater_1  | [16:23:47/24] Using task id 1
updater_1  | [16:23:47/24] Lock: update_daemon-23.lock
updater_1  | [16:23:47/22] Waiting before update (0)
updater_1  | [16:23:47/24] Waiting before update (5)
updater_1  | [16:23:47/22] Scheduled 0 feeds to update...
updater_1  | [16:23:47/22] Sending digests, batch of max 15 users, headline limit = 1000
updater_1  | [16:23:47/22] All done.
updater_1  | [16:23:47/22] Expired cache/export: removed 0 files.
updater_1  | [16:23:47/22] Expired cache/feeds: removed 0 files.
updater_1  | [16:23:47/22] Expired cache/images: removed 0 files.
updater_1  | [16:23:47/22] Expired cache/upload: removed 0 files.
updater_1  | [16:23:47/22] Removed 0 old lock files.
updater_1  | [16:23:47/22] Removing old error log entries...
updater_1  | [16:23:47/22] Removing old archived feeds...
updater_1  | [16:23:47/22] Purged 0 orphaned posts.
updater_1  | [16:23:48/13] [reap_children] child 21 reaped.
updater_1  | [16:23:48/13] [SIGCHLD] jobs left: 1
updater_1  | [16:23:52/24] Scheduled 0 feeds to update...
updater_1  | [16:23:52/24] Sending digests, batch of max 15 users, headline limit = 1000
updater_1  | [16:23:52/24] All done.
updater_1  | [16:23:53/13] [reap_children] child 23 reaped.
updater_1  | [16:23:53/13] [SIGCHLD] jobs left: 0
updater_1  | [16:24:47/13] [MASTER] active jobs: 0, next spawn at 60 sec.
updater_1  | [16:25:47/13] [MASTER] active jobs: 0, next spawn at 0 sec.
updater_1  | [16:25:48/13] [MASTER] spawned client 0 [PID:27]...
updater_1  | [16:25:48/13] [MASTER] spawned client 1 [PID:29]...
updater_1  | [16:25:48/28] Using task id 0
updater_1  | [16:25:48/28] Lock: update_daemon-27.lock
updater_1  | [16:25:48/28] Waiting before update (0)
updater_1  | [16:25:48/30] Using task id 1
updater_1  | [16:25:48/30] Lock: update_daemon-29.lock
updater_1  | [16:25:48/30] Waiting before update (5)
updater_1  | [16:25:48/28] Scheduled 0 feeds to update...
updater_1  | [16:25:48/28] Sending digests, batch of max 15 users, headline limit = 1000
updater_1  | [16:25:48/28] All done.
updater_1  | [16:25:48/28] Expired cache/export: removed 0 files.
updater_1  | [16:25:48/28] Expired cache/feeds: removed 0 files.
updater_1  | [16:25:48/28] Expired cache/images: removed 0 files.
updater_1  | [16:25:48/28] Expired cache/upload: removed 0 files.
updater_1  | [16:25:48/28] Removed 0 old lock files.
updater_1  | [16:25:48/28] Removing old error log entries...
updater_1  | [16:25:48/28] Removing old archived feeds...
updater_1  | [16:25:48/28] Purged 0 orphaned posts.
updater_1  | [16:25:49/13] [reap_children] child 27 reaped.
updater_1  | [16:25:49/13] [SIGCHLD] jobs left: 1
updater_1  | [16:25:53/30] Scheduled 0 feeds to update...
updater_1  | [16:25:53/30] Sending digests, batch of max 15 users, headline limit = 1000
updater_1  | [16:25:53/30] All done.
updater_1  | [16:25:54/13] [reap_children] child 29 reaped.
updater_1  | [16:25:54/13] [SIGCHLD] jobs left: 0
updater_1  | [16:26:48/13] [MASTER] active jobs: 0, next spawn at 60 sec.
updater_1  | [16:27:48/13] [MASTER] active jobs: 0, next spawn at 0 sec.
updater_1  | [16:27:49/13] [MASTER] spawned client 0 [PID:33]...
updater_1  | [16:27:49/13] [MASTER] spawned client 1 [PID:35]...
updater_1  | [16:27:49/34] Using task id 0
updater_1  | [16:27:49/36] Using task id 1
updater_1  | [16:27:49/36] Lock: update_daemon-35.lock
updater_1  | [16:27:49/34] Lock: update_daemon-33.lock
updater_1  | [16:27:49/34] Waiting before update (0)
updater_1  | [16:27:49/36] Waiting before update (5)
updater_1  | [16:27:49/34] Scheduled 0 feeds to update...
updater_1  | [16:27:49/34] Sending digests, batch of max 15 users, headline limit = 1000
updater_1  | [16:27:49/34] All done.
updater_1  | [16:27:49/34] Expired cache/export: removed 0 files.
updater_1  | [16:27:49/34] Expired cache/feeds: removed 0 files.
updater_1  | [16:27:49/34] Expired cache/images: removed 0 files.
updater_1  | [16:27:49/34] Expired cache/upload: removed 0 files.
updater_1  | [16:27:49/34] Removed 0 old lock files.
updater_1  | [16:27:49/34] Removing old error log entries...
updater_1  | [16:27:49/34] Removing old archived feeds...
updater_1  | [16:27:49/34] Purged 0 orphaned posts.
updater_1  | [16:27:50/13] [reap_children] child 33 reaped.
updater_1  | [16:27:50/13] [SIGCHLD] jobs left: 1
updater_1  | [16:27:54/36] Scheduled 0 feeds to update...
updater_1  | [16:27:54/36] Sending digests, batch of max 15 users, headline limit = 1000
updater_1  | [16:27:54/36] All done.
updater_1  | [16:27:55/13] [reap_children] child 35 reaped.
updater_1  | [16:27:55/13] [SIGCHLD] jobs left: 0

I ran this before, what effectively happens from here on is that the number of “child reaped” keeps on increasing for ever, the loop never ends. I am assuming I did something very stupid in the .env file, I tried to find solutions on this forum and internet in general but after searching for hours I hope one of you can help me.

If possible include steps to reproduce the problem:

Run "sudo docker-compose up --build " with the .env as above.

tt-rss version (including git commit id):

dynamic - latest (im not even sure where to check)

Platform (i.e. Linux distro, PHP, PostgreSQL, etc) versions:

Ubuntu 20.10 groovy

Those numbers are just process IDs. https://git.tt-rss.org/fox/tt-rss/src/master/update_daemon2.php#L66

Do something like docker-compose up -d if you’re expecting it to go to the background.

Thank you, after you wrote this i realized that the reason i thought it wasn’t working is because i kept on checking on “127.0.0.1:8280” and not “127.0.0.1:8280/tt-rss” so i assumed the reap command along with the Notices about [pool www] were to blame.

Again thank you for looking through my sillyness.

https://git.tt-rss.org/fox/tt-rss/commit/2abc434e265278ff563db75368c0d50586fd4553

this should hopefully make things a bit more obvious