瀏覽代碼

fix: optimize certbot ownership script to reduce container startup time

Replace inefficient find/execdir implementation that was causing 3+ minute
startup delays with a more efficient approach that:

1. Uses a flag file to skip redundant operations on container restarts
2. Processes site-packages directories with bulk chown operations instead
   of individual file checks and changes
3. Maintains the same functionality while dramatically improving performance

This change should significantly reduce container startup time while ensuring
all necessary file permissions are still properly set.
Aditya 8 月之前
父節點
當前提交
0cab720f23
共有 1 個文件被更改,包括 16 次插入3 次删除
  1. 16 3
      docker/rootfs/etc/s6-overlay/s6-rc.d/prepare/30-ownership.sh

+ 16 - 3
docker/rootfs/etc/s6-overlay/s6-rc.d/prepare/30-ownership.sh

@@ -23,6 +23,19 @@ chown -R "$PUID:$PGID" /etc/nginx/nginx
 chown -R "$PUID:$PGID" /etc/nginx/nginx.conf
 chown -R "$PUID:$PGID" /etc/nginx/nginx.conf
 chown -R "$PUID:$PGID" /etc/nginx/conf.d
 chown -R "$PUID:$PGID" /etc/nginx/conf.d
 
 
-# Prevents errors when installing python certbot plugins when non-root
-chown "$PUID:$PGID" /opt/certbot /opt/certbot/bin
-find /opt/certbot/lib/python*/site-packages -not -user "$PUID" -execdir chown "$PUID:$PGID" {} \+
+# Certbot directories - optimized approach
+CERT_INIT_FLAG="/opt/certbot/.ownership_initialized"
+
+if [ ! -f "$CERT_INIT_FLAG" ]; then
+    # Prevents errors when installing python certbot plugins when non-root
+    chown "$PUID:$PGID" /opt/certbot /opt/certbot/bin
+
+    # Handle all site-packages directories efficiently
+    find /opt/certbot/lib -type d -name "site-packages" | while read -r SITE_PACKAGES_DIR; do
+        chown -R "$PUID:$PGID" "$SITE_PACKAGES_DIR"
+    done
+
+    # Create a flag file to skip this step on subsequent runs
+    touch "$CERT_INIT_FLAG"
+    chown "$PUID:$PGID" "$CERT_INIT_FLAG"
+fi