السلام عليكم ، بعد قراءة الموضوعين الرائعين :
أساسيات عالم الحاويات docker / docker-compose والحوسبة السحابية
و Nginx proxy manager اسهل طريقه من اجل عمل webserver مخصص للحاويات(docker/podman)
استطعت تثبيت برمجية syncthing وضبطها بنجاح.
الآن أود تثبيت حاوية تشمل فقط نظام إدارة قواعد البيانات mariadb .
قمت بكتابة هذا الملف:
version: "3"
services:
mariadb:
image: mariadb
container_name: mariadb
environment:
MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}"
volumes:
- ./data:/var/lib/mysql
restart: unless-stopped
networks:
- web
networks:
web:
external: true
لاحظ أنني لم أكشف أي منفذ فلا أريد إظهارها للانترنت ، بل أريدها أن تكون متاحة فقط لباقي الحاويات داخل نفس الشبكة web
.
عندما أردت اختبار اتصال بقاعدة البيانات ، وقع اختياري على phpmyadmin لتجربة تلك الإعدادات ، وكتبت هذا الملف:
version: '3'
services:
phpmyadmin:
image: phpmyadmin:fpm-alpine
container_name: phpmyadmin
hostname: pma
restart: always
ports:
- "127.0.0.1:7618:80"
environment:
- PMA_HOST=mariadb
- MYSQL_ROOT_PASSWORD="${MYSQL_ROOT_PASSWORD}"
- PMA_ABSOLUTE_URI="${PMA_ABSOLUTE_URI}"
networks:
- web
networks:
web:
external: true
بالطبع يوجد ملف .env
بداخل نفس المسار يحتوي على نفس كلمة المرور الموجودة في حاوية mariadb.
قمت بعدها بإنشاء نطاق فرعي pma.example.com
وفتحت لوحة التحكم NPM
وأضفت شهادة SSL للنطاق ، ثم أضفت إعداد الوكيل لحاوية phpmyadmin بالشكل التالي: http://phpmyadmin:7618
لكن للأسف عند زيارة pma.example.com
يعطيني خطأ ٥٠٢.
وعند التحقق من سجلات nginx
وجدت الرسالة التالية:
2022/07/29 00:28:52 [error] 16418#16418: *14928 connect() failed (111: Connection refused) while connecting to upstream, client: 172.70.86.27, server: pma.example.com, request: "GET/ HTTP/2.0", upstream: "http://172.16.32.5:7618/", host: "pma.example.com", referrer: "http://localhost:7618/"
قمت باختبار استجابة الحاوية من داخلها ، باستخدام الأمر : docker exec phpmyadmin curl http://localhost:7618
وكان هذا الرد: curl: (7) Failed to connect to localhost port 7618 after 1 ms: Connection refused
حسب علمي إذا كانت المشكلة في الاتصال بقاعدة البيانات ، فسوف يفتح phpmyadmin على الأقل ويخبرني بوجود مشكلة في الاتصال، لكن الأغلب أن المشكلة في حاوية phpmyadmin نفسها.
إذن كيف يمكنني تجربة اتصال mariadb للتأكد من أنها تعمل ؟
الجزء الآخر
أنا أود إبقاء حاوية mariadb بشكل مستقل لكن مع وضعها بنفس الشبكة web
بحيث تستطيع كافة الحاويات الموجودة بنفس الشبكة أن تتصل بها.
ذلك لأنني لا أريد تثبيت عدد كبير من نسخ mariadb مع كل برمجية جديدة . يكفي واحدة فقط في النظام ككل ، ولكل برمجية تستطيع الاتصال بها وإنشاء قاعدة بيانات خاصة.
عند استخدام وردبرس مثلا ، هل أكتب mariadb
في المتغير WORDPRESS_DB_HOST
؟ أم أكتب عنوان مثل 172:16:32:4
؟
هل وردبرس سوف يتعرف على mariadb
مثلما يتعرف NPM على http://phpmyadmin
؟