في بعض الأحيان، عند إجراء ترقيات عبر واجهة المستخدم الويب، يخبرني Discourse بتشغيل:
cd /var/discourse
git pull
./launcher rebuild app
بما أن عملية rebuild تتصل بـ GitHub عدة مرات، وGitHub محجوز جزئيًا في الصين حيث يستضيف خادمي، يجب عليّ إعداد وكيل HTTP/HTTPS للوصول إلى GitHub بشكل أفضل. إليك مقارنة بين زيارة YouTube بدون وكيل وبه:
ومع ذلك، عند تشغيل ./launcher rebuild image، يدخل السكربت إلى التطبيق ويؤدي جميع العمليات داخل Docker، حيث تختلف بيئة الشبكة عن المضيف الذي يستخدم الوكيل، ولا يمكنني الوصول إلى YouTube، لذا تفشل عملية rebuild في معظم الأحيان.
root@iosre:/var/discourse# ./launcher enter app
root@iosre-app:/var/www/discourse# wget https://youtube.com
--2021-06-10 15:59:57-- https://youtube.com/
Resolving youtube.com (youtube.com)... 69.171.248.128, 2001::d238:33c1
Connecting to youtube.com (youtube.com)|69.171.248.128|:443... ^C
بناءً على إعدادك 30080:80 في قسم التعريض (expose)، كل ما تحتاجه هو إعداد طلبات التحويل (proxy requests) على Nginx أو Apache أو ما شابه.
على سبيل المثال، إعداداتي لـ Nginx (أستخدم المنفذ 2080 بدلاً من 30080):
/etc/nginx/sites-available/00-default-ssl.conf
server {
...
location / {
# يُستخدم هذا الإعداد مع Nginx عند تشغيل Docker بالطريقة العادية (وضع الجسر BRIDGED MODE)
proxy_pass http://example.com:2080/;
# هذان السطران يُستخدمان في حال كان شبكة Docker في وضع المضيف (--net=host)
#proxy_pass http://example.com:3000/;
#proxy_redirect http://example.com:2080/ https://example.com;
proxy_read_timeout 90;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
error_page 502 =502 /errorpages/discourse_offline.html;
proxy_intercept_errors on;
# يمكنك استثناء الطلبات من عناوين IP معينة من سجل الوصول
if ( $remote_addr = "x.x.x.x" )
{
access_log off;
}
}
location /errorpages/ {
alias /var/www/errorpages/;
}
}
عند تشغيل الحاوية في وضع المضيف (--net=host)، يجب أن تفكر في تغيير إعدادات التحويل لاستخدام المنفذ 3000 مع إعادة التوجيه (ربما عبر HTTPS كما في المثال أعلاه).