Ana içeriğe geç

Docker Kurulumu

Emakin Docker imajları Docker Hub'da yayımlanır: 6kare.

Konteyner ilk kez başlatıldığında, belgelenen varsayılan alanadı ve yönetici kullanıcısı otomatik olarak oluşturulur:

  • varsayılan yönetici kullanıcısı: [email protected]
  • varsayılan yönetici parolası: admin

Varsayılan erişim noktaları:

  • Uygulama erişimi: http://localhost
  • Sistem Yönetimi: https://localhost:7180

Docker Compose Yapılandırması

Aşağıdakine benzer bir docker-compose.yml dosya oluşturun:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
services:
    emakin:
        image: 6kare/emakin:8.8
        restart: unless-stopped
        ports:
            - "80:80"
            - "443:443"
            - "7180:7180"
            - "25:25"
            - "587:587"
            - "465:465"
        sysctls:
            - "net.ipv4.ip_unprivileged_port_start=0"
        depends_on:
            dragonfly:
                condition: service_started
            postgres:
                condition: service_healthy
            basex:
                condition: service_started
            tika:
                condition: service_started
        volumes:
            - "emakin-data:/app/Configuration/Data"
        environment:
            - AK_DbProvider=PostgreSql
            - AK_DbConnStr=Host=postgres;Database=ALTIKARE;Username=ALTIKARE;Password=ALTIKARE;
            - AK_RedisConnStr=dragonfly,allowAdmin=true
            - AK_BasexConnStr=http://admin:admin@basex:1984/
            - AK_TikaConnStr=http://tika:9998/
            - AK_WopiConnStr=http://onlyoffice:81/hosting/discovery
            - AK_AntivirusServerUrl=tcp://clamav:3310
    postgres:
        image: "postgres:18"
        restart: unless-stopped
        healthcheck:
            test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB -h localhost"]
            interval: 5s
            timeout: 5s
            retries: 20
            start_period: 10s
        volumes:
            - "postgres-data:/var/lib/postgresql"
        environment:
            - POSTGRES_USER=ALTIKARE
            - POSTGRES_PASSWORD=ALTIKARE
            - POSTGRES_DB=ALTIKARE
    dragonfly:
        image: docker.dragonflydb.io/dragonflydb/dragonfly
        restart: unless-stopped
        expose:
            - "6379"
        ulimits:
            memlock: -1
    basex:
        image: "6kare/basex"
        restart: unless-stopped
        expose:
            - "1984"
        volumes:
            - "basex-data:/srv/basex/data"
    tika:
        image: "6kare/tika2"
        restart: unless-stopped
        expose:
            - 9998
    onlyoffice:
        image: onlyoffice/documentserver:8.0
        restart: unless-stopped
        environment:
            USE_UNAUTHORIZED_STORAGE: "true"
            WOPI_ENABLED: "true"
        ports:
            - "81:80"
            - "8443:443"
    clamav:
        image: "clamav/clamav:1.5"
        platform: linux/amd64
        restart: unless-stopped
        expose:
            - 3310
        volumes:
            - "clamav-data:/var/lib/clamav"

volumes:
    emakin-data:
    postgres-data:
    basex-data:
    clamav-data:

Compose örneği varsayılan veri yolunu kullanır ve şuna ihtiyaç duymaz AK_CONFIGURATION_DATA_PATH. Bu değişkeni yalnızca Emakin düğüm verilerinin şunun dışında depolanması gerektiğinde tanımlayın /app/Configuration/Data. Bu durumda mevcut hizmet ortamını ve birim hedefini birlikte değiştirin: emakin

1
2
3
4
environment:
    - AK_CONFIGURATION_DATA_PATH=/srv/emakin/data
volumes:
    - "emakin-data:/srv/emakin/data"

Yukarıdaki örnek varsayılan eşlemeyi değiştirir; emakin-data:/app/Configuration/Data aynı veri birimi için her iki eşlemeyi de bırakmayın. Hedef dizin, konteyner kullanıcısı tarafından yazılabilir olmalıdır. Mevcut bir dağıtımı taşırken yeni birim hedefine geçmeden önce korumalı ayarlar ve FullText kataloğu dahil mevcut verileri kopyalayın veya geri yükleyin. Compose eski verileri otomatik olarak taşımaz.

Kimlik bilgileri ve ana bilgisayar adları gibi yer tutucuları gerçek ortam değerlerinizle değiştirin, ardından yığını şu komutla başlatın docker compose up.

İsteğe Bağlı Push ve Market Hizmetleri

Push ve Market hizmetleri varsayılan olarak devre dışıdır. Sağlanan Compose dosyası bu hizmetleri yalnızca profilleri seçildiğinde başlatır. Her profil, tam web yığını yerine ilgili yalıtılmış Agent modunu çalıştırır.

Market'i HTTP bağlantı noktasında başlatın: 5100:

1
docker compose --profile market up -d market

Push'ı HTTPS bağlantı noktasında başlatın: 5111:

1
2
PUSH_PRODUCT_CERTIFICATE_PASSWORD='your-pfx-password' \
docker compose --profile push up -d push

Push profilini başlatmadan önce imzalama PFX dosyasını şu konuma yerleştirin ./push/product.pfx. Compose bu dosyayı salt okunur olarak şuraya bağlar /run/emakin/push/product.pfx ve parolasını şu yolla iletir PUSH_PRODUCT_CERTIFICATE_PASSWORD. PFX dosyasını ve parolayı kaynak denetiminin dışında tutun. Push profili şu HTTP bağlantı noktasını 5110 ve şu HTTPS bağlantı noktasını 5111dinler; sağlanan Compose yapılandırması tarafından yalnızca 5111 yayımlanır.

Aracı imajı, özel dağıtımlar için şu çalışma zamanı bağlantı noktalarını sunar: Web 80/443, Market 5100, Push 5110/5111, FullText 5120, Health 5121ve Sistem Yönetimi. 7180.

Ortam Değişkenleri

Belgelenen veritabanı ortam değişkenleri şunlardır:

1
2
AK_DbProvider=PostgreSQL  # Or "Oracle", "SqlServer"
AK_DbConnStr=Host=databaseserver;Database=database;Username=user;Password=pass;

İmajları Paketleme

Kapalı bir ağa dağıtım için Docker imajlarını paketlemek üzere aşağıdaki komut dizisini kullanın. Çalıştırdıktan sonra, emakin-deploy.tar.gz geçerli dizinde oluşturulur.

1
2
3
4
5
6
7
8
9
docker compose pull

echo "Packaging..."

docker compose config --images | sort -u | xargs docker save > emakin-deploy.tar && \
tar czf emakin-deploy.tar.gz docker-compose.yml emakin-deploy.tar && \
rm -f emakin-deploy.tar

echo "Packaging completed."

İmajları Açma

1
2
3
4
5
6
7
echo "Loading Docker images..."

tar xzf emakin-deploy.tar.gz && \
docker load -i emakin-deploy.tar && \
rm -f emakin-deploy.tar

echo "Unpack completed."

Açma işlemi tamamlandığında hizmetleri Docker Compose ile başlatın:

1
docker compose up -d --pull never

WSL Desteği

Bazı ortamlarda PostgreSQL imajı, dosya sistemi izinleriyle ilgili sorunlar nedeniyle WSL ile düzgün çalışmayabilir. Bu durumlarda Windows dosya yolunu bağlamak yerine Docker birimi kullanın.

1
2
3
4
5
6
7
....
postgres:
    volumes:
        - postgres-data:/var/lib/postgresql
...
volumes:
  postgres-data:

HAProxy ile Yük Dengeleyici Örneği

Aşağıdaki örnek, birden fazla Emakin web düğümü arasında yük dengelemesi yapmak için HAProxy hizmetinin nasıl eklenebileceğini gösterir:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#...previous services definition...
haproxy:
    image: haproxy:latest
    volumes:
        - "./haproxy.cfg:/usr/local/etc/haproxy:ro"
    restart: always
    ports:
        - "80:80"
        - "443:443"
        - "7180:7180"
        - "25:25"
        - "587:587"
        - "465:465"

#...rest of the configuration...

Ayrıca ayrı bir haproxy.cfg dosyaya ihtiyacınız vardır. Belgelenen örnek:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
frontend http
    bind *:80
    bind *:443
    bind *:5000
    mode http
    timeout client 1000s
    use_backend all

backend all
    mode http
    timeout server 1000s
    timeout connect 1000s
    server s1 web1:80
    server s2 web2:80
    server s3 web3:80

Örneği gerçek ana bilgisayar adlarınıza, bağlantı noktalarınıza ve ağ düzeninize uyarlayın.