أي أمر يُحدِّث صور Docker فقط؟

أي أمر هو المسؤول عن تحديث صور Docker فقط؟

/var/discourse# ./launcher -h
Usage: launcher COMMAND CONFIG [--skip-prereqs] [--docker-args STRING]
Commands:
    start:       Start/initialize a container
    stop:        Stop a running container
    restart:     Restart a container
    destroy:     Stop and remove a container
    enter:       Open a shell to run commands inside the container
    logs:        View the Docker logs for a container
    bootstrap:   Bootstrap a container for the config based on a template
    run:         Run the given command with the config in the context of the last bootstrapped image
    rebuild:     Rebuild a container (destroy old, bootstrap, start new)
    cleanup:     Remove all containers that have stopped for > 24 hours
    start-cmd:   Generate docker command used to start container

Options:
    --skip-prereqs             Don't check launcher prerequisites
    --docker-args              Extra arguments to pass when running docker
    --skip-mac-address         Don't assign a mac address
    --run-image                Override the image used for running the container

موقفي هو:
عندما يكون هناك حاجة إلى تحديث صور Docker أثناء البناء، وإذا كانت شبكة الخادم ضعيفة، فإن العملية تتعطل لفترة طويلة جدًا في خطوة تحديث الصورة. أتمنى أن يكون هناك أمر مخصص لتحديث صور Docker فقط، بحيث أستطيع تحديث الصور مسبقًا بشكل منفصل، ثم بناء الكود بهدوء. على سبيل المثال:

./launcher pull-docker

أعلم أنني يمكنني إنشاء نسخة قابلة للاستخدام يدويًا، لكنني ما زلت أتمنى أن يوفر الفريق الرسمي أمرًا كهذا.

ههه، الطريقة الوحيدة التي أعرفها هي أولاً تحديث سكربت المُشغِّل (launcher):

cd /var/discourse
git pull

ثم ابحث عن وسم الصورة الافتراضي (default image tag) الذي يستخدمه المُشغِّل:

grep -m1 '^image=' launcher

يجب أن يبدو الناتج على النحو التالي:

image="discourse/base:2.0.20260915-0028"

ثم قم بتشغيل الأمر:

docker pull discourse/base:2.0.20260915-0028

عندما تقوم بتشغيل ./launcher rebuild app، أعتقد أنه سيتخطى التحميل.

عند تشغيل إعادة البناء، يجب أن يظهر النص Status: Image is up to date for discourse/base:2.0.20260915-0028…

شكرًا على ردّك. أنا حاليًا أستخدم طريقة مشابهة للتحديث، لكنها معقدة بعض الشيء، وأرغب في كتابة سكربت تلقائي بنفسي، لكنني أخشى أن يصبح غير متوافق بعد التحديثات الرسمية.

يمكنك القيام بذلك باستخدام سكربت Bash قابل للتنفيذ، بل يمكنك حتى استخدام مهمة cron لأتمتته. لا أعرف لماذا سيصبح غير متوافق في أي وقت قريب.

أقصد أنه قد يصبح غير متوافق في المستقبل، وقد أحتاج إلى التحقق من هذا السكربت في كل مرة، مما يزيد بلا شك من العبء الإضافي على العمل. أنا فقط أفترض أسوأ السيناريوهات :joy:. ومع ذلك، عندما يتعلق الأمر بحل المشكلة، الأفضل أن نبدأ أولاً ثم نضبط الأمور أثناء التنفيذ.