ما الجديد
تثبيت التطبيق
How to install the app on iOS

Follow along with the video below to see how to install our site as a web app on your home screen.

ملاحظة: This feature may not be available in some browsers.

مرحباً بكم في مجتمع المطور السوري - Syrian DEV!

نحن نؤمن بأن التعاون والتواصل هما الأساس لتطوير المهارات والنجاح في مجال التكنولوجيا. ستجد هنا ما يساعدك على النمو والتعلم. نحن نسعى إلى بناء مجتمع قوي ومترابط. كن اليوم جزءًا من شيء عظيم، انضم الأن!

Syrian DEV

New member
إنضم
6 نوفمبر 2024
المشاركات
2
مستوى التفاعل
2
النقاط
3
الإقامة
Germany
الموقع الالكتروني
syriandev.com
أود معرفة الخطوات التفصيلية لتثبيت وتكوين PostgreSQL ك Docker Container باستخدام Docker Compose، مع إعدادات أساسية مثل اسم قاعدة البيانات، المستخدم، وكلمة المرور. بالإضافة إلى ذلك، كيف يمكنني الوصول إلى قاعدة البيانات من ال Host والتحكم في إعدادات الـ Storage؟
 
التعديل الأخير:
الحل
فيك تتبع التعليمات التالية لتثبيت وتكوين PostgreSQL كـ Docker Container باستخدام Docker Compose.

المتطلبات الأساسية
  • تثبيت وتفعيل Docker و Docker Compose
  • يكون عندك صلاحيات sudo على الخادم يلي بدك تثبت عليه PostgreSQL

1. إنشاء مجلدات مخصصة لبيانات وسجلات PostgreSQL
لحتى تتمكن من تخزين الـData والـLogs بشكل دائم لـ PostgreSQL، أنشئ المجلدات المطلوبة عبر تنفيذ الأمر التالي:
كود:
mkdir -p /opt/docker/postgresql/{data,logs}

2. ضبط الأونات
خدمة PostgreSQL ضمن الـContainer بتحتاج إذن كتابة على مجلد الـLogs على المضيف (Host). عدّل الملكية والأذونات لهالمجلد عبر تنفيذ الأوامر التالية:
كود:
chown -R 999:999 /opt/docker/postgresql/logs
chmod -R 755 /opt/docker/postgresql/logs

ملاحظة:
  • الرقم...
فيك تتبع التعليمات التالية لتثبيت وتكوين PostgreSQL كـ Docker Container باستخدام Docker Compose.

المتطلبات الأساسية
  • تثبيت وتفعيل Docker و Docker Compose
  • يكون عندك صلاحيات sudo على الخادم يلي بدك تثبت عليه PostgreSQL

1. إنشاء مجلدات مخصصة لبيانات وسجلات PostgreSQL
لحتى تتمكن من تخزين الـData والـLogs بشكل دائم لـ PostgreSQL، أنشئ المجلدات المطلوبة عبر تنفيذ الأمر التالي:
كود:
mkdir -p /opt/docker/postgresql/{data,logs}

2. ضبط الأونات
خدمة PostgreSQL ضمن الـContainer بتحتاج إذن كتابة على مجلد الـLogs على المضيف (Host). عدّل الملكية والأذونات لهالمجلد عبر تنفيذ الأوامر التالية:
كود:
chown -R 999:999 /opt/docker/postgresql/logs
chmod -R 755 /opt/docker/postgresql/logs

ملاحظة:
  • الرقم 999:999 هو الـ User ID وهو يعود للمستخدم postgresql في داخل الـ Container.

3. إنشاء ملف Docker Compose
ملف docker-compose.yml التالي بيوضح كيفية تكوين PostgreSQL
ملف docker-compose.yml اللي عم نستخدمه هون مخصص لتشغيل حاوية PostgreSQL مع إعدادات معينة لتهيئة البيئة بشكل احترافي. الملف يوضح كيف نحدد تفاصيل تشغيل الحاوية والاتصالات وتخزين البيانات والسجلات.
كود:
version: '3.8'

services:
  postgres:
    image: postgres:latest
    container_name: postgres_container
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=mypassword
      - POSTGRES_DB=postgres
    ports:
      - "5432:5432"
    volumes:
      - /opt/docker/postgresql/data:/var/lib/postgresql/data
      - /opt/docker/postgresql/logs:/var/log/postgresql
    restart: always
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres || exit 1"]
      interval: 30s
      timeout: 10s
      retries: 5
    networks:
      - postgres_network
  
networks:
  postgres_network:
    driver: bridge

ملحوظة: تأكد من تبديل mypassword بكلمة السر الخاصة فيك.

4. بدء تشغيل الحاوية PostgreSQL
بعد ما أنشئنا المجلدات المطلوبة وملف التكوين docker-compose.yml رح نبدأ بانشاء الـ Container وتكوينه عبر تنفيذ الأمر التالي:
كود:
docker-compose up -d

هاد الأمر رح ينفذ محتوى الملفdocker-compose.yml يلي قمنا بتكوينه مسبقا بس تأكد انك بالفعل في نفس المجلد يلي قمت بانشاء الملفdocker-compose.yml بداخله!

5. إعداد مخصص لـpostgresql.conf
احفظ إعدادات التكوين التالية في الملف /opt/docker/postgresql/data/postgresql.conf على المضيف.

كود:
# Connection and Language Settings
listen_addresses = '*'                       # Allow external connections
default_text_search_config = 'pg_catalog.english'

# Memory and Cache Settings
shared_buffers = 2GB                         # Set shared memory buffer to 2GB
work_mem = 8MB                               # Set per-operation work memory

# WAL (Write-Ahead Logging) Settings
max_wal_size = 2GB                           # Prevent frequent checkpoints
min_wal_size = 512MB                         # Minimum WAL size

# Logging Configuration
log_destination = 'stderr'
logging_collector = on
log_directory = '/var/log/postgresql'        # Set log directory to mounted volume
log_filename = 'postgresql-%Y-%m-%d.log'
log_min_duration_statement = 1000            # Log queries longer than 1s
log_rotation_age = '1d'                      # Rotate logs daily
log_rotation_size = '100MB'                  # Rotate logs when they reach 100MB

6. إعداد مخصص لـpg_hba.conf
عدل الملف /opt/docker/postgresql/data/pg_hba.conf واحذف كل الأسطر فيه وبعدين ضيف الأسطر التالية:

هالتكوين بيسمح بالاتصالات المحلية الموثوقة وبيعطي إعدادات خاصة بالنسخ المتماثل:

كود:
# PostgreSQL Client Authentication Configuration File
# ====================================================
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# Local connections
local   all             all                                     trust

# Loopback connections
host    all             all             127.0.0.1/32            trust
host    all             all             ::1/128                 trust

# replication privilege.
local   replication     all                                     trust
host    replication     all             127.0.0.1/32            trust
host    replication     all             ::1/128                 trust


# Allow all external connections with scram-sha-256 authentication
host    all             all             0.0.0.0/0            scram-sha-256

إذا كان العميل محتاج يتصل بخادم PostgreSQL باستخدام عنوان IP العام، لازم تفتح المنفذ 5432 بجدار الحماية.

7. إعادة تشغيل الـPostgreSQL Container
كود:
docker restart postgres_container

8. التحقق من اتصال PostgreSQL
حتى تتأكد انو PostgreSQL شغال بشكل صحيح، فيك تتصل فيه مباشرةً من داخل الـContainer باستخدام psql:
كود:
docker exec -it postgres_container psql -U myuser -d mydatabase

لا تنسى تستبدل mydatabase و myuser بالتكوينات يلي عملتها بالملفdocker-compose.yml

بالتوفيق!
 
التعديل الأخير:

أنشئ حساب أو قم بتسجيل الدخول للمشاركة

يجب أن تكون عضواً لكي تتمكن من ترك تعليق

أنشئ حساباً

أنشئ حساباً في مجتمعنا التقني. الأمر سهل!

تسجيل الدخول

هل لديك حساب بالفعل؟ سجّل دخولك هنا.

عودة
أعلى
ما الجديد
المنتديات
الأكثر شيوعاً
شارك…
قائمة