Ana içeriğe geç

Docker Kurulumu

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

Konteyner ilk kez başlatıldığında, belgelenmiş 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
  • Ana Bilgisayar 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 şu değişkeni gerektirmez: AK_CONFIGURATION_DATA_PATH. Bu değişkeni yalnızca Emakin düğüm verilerinin şunun dışında depolanması gerekiyorsa tanımlayın: /app/Configuration/Data. Bu durumda mevcut emakin hizmet ortamını ve birim hedefini birlikte değiştirin:

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; 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 da dahil olmak üzere mevcut verileri kopyalayın veya geri yükleyin. Compose eski verileri otomatik olarak taşımaz. emakin-data:/app/Configuration/Data

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ı bunları yalnızca profilleri seçildiğinde başlatır. Her profil, web yığınının tamamı yerine karşılık gelen yalıtılmış Agent modunu çalıştırır.

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

1
docker compose --profile market up -d market

Push'ı şu 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ı şuraya yerleştirin ./push/product.pfx. Compose bu dosyayı salt okunur olarak şuraya bağlar /run/emakin/push/product.pfx ve parolasını şu değişken aracılığıyla iletir PUSH_PRODUCT_CERTIFICATE_PASSWORD. PFX dosyasını ve parolasını kaynak denetiminin dışında tutun. Push profili HTTP bağlantı noktası 5110 ve HTTPS bağlantı noktası 5111üzerinden dinler; sağlanan Compose yapılandırmasında yalnızca 5111 yayımlanır.

Agent görüntüsü, özel dağıtımlar için şu çalışma zamanı bağlantı noktalarını kullanıma açar: Web 80/443, Market 5100, Push 5110/5111, FullText 5120, Health 5121ve Host Administration 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;

Görüntüleri Paketleme

Kapalı bir ağa dağıtım için Docker görüntülerini paketlemek üzere aşağıdaki betiği kullanın. Çalıştırma tamamlandığında 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."

Görüntüleri 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."

Dosyalar açıldıktan sonra hizmetleri Docker Compose ile başlatın:

1
docker compose up -d --pull never

WSL Desteği

Bazı ortamlarda PostgreSQL görüntüsü, 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 dengeleme 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 şöyledir:

 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 makine adlarınıza, bağlantı noktalarınıza ve ağ düzeninize göre uyarlayın.