إضافة الحزم المفقودة إلى صور Docker لـ WordPress دون إعادة بنائها

اذا تشغل مواقع Wordpress داخل حاويات دوكر, قد تواجه احيانا بعض البلاغات من بعض الإضافات أن هناك حزم ناقصة, مثلا أضافه EWWW Image optimizer, التي كانت تطلب حزم محدده لم تكون موجوده بالصورة العادية.

المتغيرات

قم بتحديد الحزم التي تحتاجها, وستتغير الأمثلة لتضمن هذه الحزم

الخِيار المعتاد في هذه الحالة هو اعادة بناء الصورة مع إضافة الحزم, لكن هذا يعني يجب عليك إعادة بناء الصورة يدويا مع كل تحديث, لكن هناك بديل, وهو تعديل امر تشغيل الصورة ليقوم بتنزيل الحزم, ثم تشغيل البرمجيات الأساسية:

Wordpress:apache (latest)

صورة Wordpress الافتراضية تستخدم توزيعة Debian كأساس, لذلك سنستخدم مدير حزم apt, سنطلب منه تحديث قائمة الحزم المحلية, ثم تنزيل الحزم المطلوبة.
عند انتهائه من تثبيت الحزم سننتقل لتشغيل السكريبت المسؤول عن تشغيل برمجية WordPress.

services:
  wordpress:
    image: wordpress:apache
    restart: always
+   command: sh -c "apt update && apt install -y --no-install-recommends =debian-packages=; docker-entrypoint.sh apache2-foreground"
    environment:
      WORDPRESS_DB_HOST: mariadb
      WORDPRESS_DB_USER: xxxx
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_PASSWORD: xxxxx
    volumes:
      - html:/var/www/html:rw

Wordpress:fpm

نفس الطريقة مع الصورة الأساسية, فقط مع تغيير الأمر المستخدم لتشغيل البرمجية بعد إضافة الحزم.

services:
  wordpress:
    image: wordpress:fpm-alpine
    restart: always
+   command: sh -c "apt update && apt install -y --no-install-recommends =debian-packages=; docker-entrypoint.sh php-fpm"
    environment:
      WORDPRESS_DB_HOST: mariadb
      WORDPRESS_DB_USER: xxxx
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_PASSWORD: xxxxx
    volumes:
      - html:/var/www/html:rw

Wordpress:fpm-alpine

كما يتضح من اسم الصورة, هي تستخدم توزيعة Alpine كأساس لها, وهذا يعني انه سنحتاج لاستخدام مدير حزم APK بدلا من APT.

services:
  wordpress:
    image: wordpress:fpm-alpine
    restart: always
+   command: sh -c "apk add =alpine-packages=; docker-entrypoint.sh php-fpm"
    environment:
      WORDPRESS_DB_HOST: mariadb
      WORDPRESS_DB_USER: xxxx
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_PASSWORD: xxxxx
    volumes:
      - html:/var/www/html:rw

والان ستضاف الحزم التي تحتاجها دون ان تحتاج لأعاده بناء الصورة يدويا!