---
title: Docker Compose
description: شغّل Human Plugin على مضيف واحد باستخدام Docker Compose، مع قاعدة بيانات PostgreSQL الخاصة بك.
canonical: https://developer.unico.io/ar/human-plugin/self-hosting/docker-compose
locale: ar
generated_by: markdown-export
---

# Docker Compose

حاوية Human Plugin واحدة على مضيف واحد، متصلة بقاعدة بيانات PostgreSQL الخاصة بك.

## المتطلبات المسبقة

- Docker Engine الإصدار 24 أو أحدث مع Docker Compose v2.
- قاعدة بيانات PostgreSQL مخصصة لـ Human Plugin ويمكن الوصول إليها من المضيف. راجع [المتطلبات المسبقة والوصول](/ar/human-plugin/get-started/prerequisites).
- بيانات اعتماد السجل (registry) ومفتاح الوصول من Unico.

## 1. تسجيل الدخول إلى السجل

مرة واحدة لكل مضيف. يحتفظ Docker ببيانات الاعتماد في `~/.docker/config.json`.

```bash
echo "<token>" | docker login pkg.unico.run -u <username> --password-stdin
```

## 2. كتابة الإعدادات

أنشئ مجلدًا لـ Human Plugin وملف `.env` يقرؤه مالكه فقط:

```bash
mkdir -p /opt/human-plugin && cd /opt/human-plugin
```

```bash title=".env"
HUMAN_API_ACCESS_KEY=<your access key>
POSTGRES_ADDRESS_HOST=<database host>
POSTGRES_USER=human_plugin
POSTGRES_PASSWORD=<database password>
```

```bash
chmod 600 .env
```

أضف `POSTGRES_ADDRESS_PORT` أو `POSTGRES_DATABASE` أو `POSTGRES_SSL_MODE` فقط إذا كانت قاعدة بياناتك تختلف عن القيم الافتراضية في [الإعداد](/ar/human-plugin/self-hosting/configuration). لا تضع ملف `.env` في نظام التحكم بالإصدارات أبدًا.

## 3. كتابة `compose.yaml`

```yaml title="compose.yaml"
services:
  human-plugin:
    image: pkg.unico.run/human-plugin-api:latest
    pull_policy: always
    restart: unless-stopped
    stop_grace_period: 60s
    env_file: .env
    ports:
      - "127.0.0.1:8080:8080"
```

- **`ports`:** انشر المنفذ على `127.0.0.1` أو على واجهة خاصة فقط، وليس على `0.0.0.0` أبدًا. لا يملك Human Plugin مصادقة خاصة به: راجع [الشبكات والأمان](/ar/human-plugin/self-hosting/networking-and-security).
- **`stop_grace_period: 60s`:** ينتظر Human Plugin حتى 55 ثانية لإنهاء الطلبات الجارية عند إيقافه. قد تقطع مهلة أقصر عملية إنشاء قبل اكتمالها.
- **`pull_policy: always`:** يتحقق كل `up` من وجود أحدث صورة، فتعمل دائمًا بأحدث إصدار.

## 4. البدء

```bash
docker compose up -d
```

```bash
curl --fail http://127.0.0.1:8080/health/ready
```

وجّه الطلبات إلى Human Plugin فقط بعد أن يردّ `/health/ready` بالرمز `200`. ثم نفّذ طلب الإنشاء الوارد في [البدء السريع](/ar/human-plugin/get-started/quickstart#3-create-a-process) عليه.

## السجلات والحالة

```bash
docker compose ps
```

```bash
docker compose logs -f human-plugin
```

ينتهي البدء السليم بسطر `human plugin listening`. راجع [الصحة والمراقبة](/ar/human-plugin/self-hosting/health-and-monitoring#logs) لسجل بدء التشغيل الكامل. إذا أعادت الحاوية التشغيل في حلقة متكررة، يوضح السجل السبب: راجع [استكشاف الأخطاء وإصلاحها](/ar/human-plugin/additional-resources/troubleshooting).

## التحديث

```bash
docker compose pull && docker compose up -d
```

يستبدل Compose الحاوية فقط عندما تتغير الصورة. راجع [العمليات](/ar/human-plugin/self-hosting/operations) لمعرفة ما يجب التحقق منه بعد التحديث.

## الإيقاف

```bash
docker compose down
```

بياناتك في قاعدة بيانات PostgreSQL الخاصة بك، لذا لا يؤدي إيقاف الحاوية أو إزالتها إلى فقدان أي شيء.