From 8200cfeb8a0f4513df5bacc6b4002a5ae824dcd1 Mon Sep 17 00:00:00 2001 From: MrMeeb Date: Fri, 19 Apr 2024 17:07:54 +0000 Subject: [PATCH] Add supervisord-dependent-startup, restructure file layout --- Dockerfile | 8 +++++++- root/etc/supervisor.d/act.conf | 8 ++++++++ root/etc/supervisor.d/cron.conf | 5 +++++ root/etc/supervisor.d/docker.conf | 8 ++++++++ root/etc/supervisord.conf | 28 ++++++++++++++++++++++++++++ 5 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 root/etc/supervisor.d/act.conf create mode 100644 root/etc/supervisor.d/cron.conf create mode 100644 root/etc/supervisor.d/docker.conf create mode 100644 root/etc/supervisord.conf diff --git a/Dockerfile b/Dockerfile index ba10155..dc6ab63 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,13 +13,19 @@ RUN make clean && make build FROM docker:25.0.5-dind USER root RUN apk add --no-cache \ - git bash supervisor + git bash supervisor python3 py3-pip + +RUN pip3 install --break-system-packages supervisord-dependent-startup COPY --from=builder /opt/src/act_runner/act_runner /usr/local/bin/act_runner COPY --from=builder /opt/src/act_runner/scripts/supervisord.conf /etc/supervisord.conf COPY --from=builder /opt/src/act_runner/scripts/run.sh /opt/act/run.sh COPY --from=builder /opt/src/act_runner/scripts/rootless.sh /opt/act/rootless.sh +COPY /root / + +RUN chmod +x /healthcheck.sh + ENV DOCKER_PRUNE_INTERVAL="0 0 * * *" # Add Crontab for root user diff --git a/root/etc/supervisor.d/act.conf b/root/etc/supervisor.d/act.conf new file mode 100644 index 0000000..f3d7340 --- /dev/null +++ b/root/etc/supervisor.d/act.conf @@ -0,0 +1,8 @@ +[program:act_runner] +stdout_logfile=/dev/fd/1 +stdout_logfile_maxbytes=0 +redirect_stderr=true +command=/opt/act/rootless.sh +dependent_startup=true +dependent_startup_wait_for=dockerd:running +autostart=false \ No newline at end of file diff --git a/root/etc/supervisor.d/cron.conf b/root/etc/supervisor.d/cron.conf new file mode 100644 index 0000000..e7dc936 --- /dev/null +++ b/root/etc/supervisor.d/cron.conf @@ -0,0 +1,5 @@ +[program:cron] +command=/usr/sbin/crond -f +stdout_logfile=/dev/fd/1 +stdout_logfile_maxbytes=0 +redirect_stderr=true \ No newline at end of file diff --git a/root/etc/supervisor.d/docker.conf b/root/etc/supervisor.d/docker.conf new file mode 100644 index 0000000..514c054 --- /dev/null +++ b/root/etc/supervisor.d/docker.conf @@ -0,0 +1,8 @@ +[program:dockerd] +command=/usr/local/bin/dockerd-entrypoint.sh +stdout_logfile_maxbytes=0 +stdout_logfile=/dev/fd/1 +redirect_stderr=true +startsecs=20 +dependent_startup=true +autostart=false \ No newline at end of file diff --git a/root/etc/supervisord.conf b/root/etc/supervisord.conf new file mode 100644 index 0000000..e0fa68d --- /dev/null +++ b/root/etc/supervisord.conf @@ -0,0 +1,28 @@ +[supervisord] +nodaemon=true +logfile=/dev/null +logfile_maxbytes=0 + +[include] +files = /etc/supervisor.d/*.conf + +[unix_http_server] +file=/run/supervisord.sock + +[supervisorctl] +serverurl=unix:///run/supervisord.sock + +[rpcinterface:supervisor] +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface + +#[eventlistener:processes] +#command=bash -c "echo READY && read line && kill -SIGQUIT $PPID" +#events=PROCESS_STATE_STOPPED,PROCESS_STATE_EXITED,PROCESS_STATE_FATAL + +[eventlistener:dependentstartup] +command=python -m supervisord_dependent_startup +autostart=true +autorestart=unexpected +startretries=0 +exitcodes=0,3 +events=PROCESS_STATE \ No newline at end of file