Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Docker images are distributed with 2 different container types. All images are hosted in the docker hub https://hub.docker.com/u/6kare address.

Emakin Standalone Container

Emakin Standalone contains all the required dependencies to run emakin. The standalone image should be used for testing purposes, and it's not recommended for production usage.

Code Block
languagebash
docker run -p 80:80 6kare/emakin-standalone:latest

On container start, the default domain is automatically created with "admin@emakin.com" user and "admin" password. The application can be accessed from http://localhost address, and the host administration settings can be accessed from http://localhost/hostadm address.

Persistent Data

By default, the application data is reset when the container is restarted. Therefore, if you need to persist the application data, docker mounts must be used to keep the stored data between restarts.

Code Block
languagebash
docker run -p 80:80 --mount source=emakindata,target=/var/lib/postgresql/data --mount source=emakindata,target=/srv/basex/data 6kare/emakin-standalone:latest

Emakin Container

Emakin image does not contain any dependency but the application image. Other dependencies like database, Redis etc., should be configured externally. This image should be used for more advanced scenarios like Docker Compose or Kubernetes.

Code Block
languagebash
docker run -p 80:80 6kare/emakin:latest

Environment Variables

External database connections can be specified with the following environment variables. The default database provider is "Postgre", but "Oracle" and "SqlServer" can be used as well.

Code Block
languagebash
AK_DbProvider=Postgre
AK_DbConnStr=Host=databaseserver;Database=database;Username=user;Password=pass;

Compose File

Emakin container can be deployed with the following Docker Compose file. Create a new text file with "docker-compose.yml" name and paste the following content into the file. After saving you can start emakin with the "docker compose up" command.

...

languageyml

...

On container start, the default domain is automatically created with "admin@emakin.com" user and "admin" password. The application can be accessed from http://localhost address, and the host administration settings can be accessed from http://localhost/hostadm address.

Emakin Container

Emakin image does not contain any dependency but the application image. Other dependencies like database, Redis etc., should be configured externally. This image should be used for more advanced scenarios like Docker Compose or Kubernetes.

Code Block
languagebash
docker run -p 80:80 6kare/emakin:8.5

Environment Variables

External database connections can be specified with the following environment variables. The default database provider is "Postgre", but "Oracle" and "SqlServer" can be used as well.

Code Block
languagebash
AK_DbProvider=Postgre
AK_DbConnStr=Host=databaseserver;Database=database;Username=user;Password=pass;

Compose File

Emakin container can be deployed with the following Docker Compose file. Create a new text file with "docker-compose.yml" name and paste the following content into the file. After saving you can start emakin with the "docker compose up" command.

Code Block
languageyml
version: '3'
services:
    web:
        image: 6kare/emakin:8.5
        ports:
            - "80:80"
            - "443:443"
            - "7180:7180"
            - "25:25"
            - "587:587"
            - "465:465"
        depends_on:
         ports:   - redis
        - "80:80"   - postgre
        - "443:443"   -  basex
       - "7180:7180"    - tika
       - "25volumes:25"
            - "587:587emkdata:/app/Configuration/Data"
        environment:
   - "465:465"          
        depends_on:- AK_DbProvider=PostgreSql
            - redisAK_DbConnStr=Host=postgre;Database=ALTIKARE;Username=ALTIKARE;Password=ALTIKARE;
            - postgreAK_RedisConnStr=redis,allowAdmin=true
            - basexAK_BasexConnStr=http://admin:admin@basex:1984/
            - AK_TikaConnStr=http://tika:9998/
            - AK_WopiConnStr=http://onlyoffice:81/hosting/discovery
         volumes:   - AK_AntivirusServerUrl=tcp://clamav:3310
    postgre:
    - "emkdata:/data"    image: "postgres"
        restart: always
        environmentvolumes:
            - AK_DbProvider=Postgre# - "/var/run/postgres/postgres.sock:/var/run/postgres/postgres.sock"
            - AK_DbConnStr=Host=postgre;Database=ALTIKARE;Username=ALTIKARE;Password=ALTIKARE;"pgdata:/var/lib/postgresql/data"
        environment:
            - AKPOSTGRES_RedisConnStr=redis,allowAdmin=trueUSER=ALTIKARE
            - AKPOSTGRES_BasexConnStr=http://admin:admin@basex:1984/PASSWORD=ALTIKARE
            - AKPOSTGRES_TikaConnStr=http://tika:9998/tikaDB=ALTIKARE
    redis:
       - AK_FULLTEXTCATALOGPATH=/data/ft
    postgre: image: "redis:alpine"
        imageexpose: "postgres"
        restart: always   - "6379"
    volumesbasex:
        image: "6kare/basex"
  #     - "/var/run/postgres/postgres.sock:/var/run/postgres/postgres.sock" expose:
            - "pgdata:/var/lib/postgresql/data1984"
        environmentvolumes:
            - POSTGRES_USER=ALTIKARE"basexdata:/srv/basex/data"
    tika:
       - POSTGRES_PASSWORD=ALTIKARE
 image: "6kare/tika2"
        restart: always
 -  POSTGRES_DB=ALTIKARE     redisexpose:
        image: "redis:alpine"   - 9998
    exposeonlyoffice:
        image: onlyoffice/documentserver
   - "6379"    restart: basex:always
        imageenvironment: "basex/basexhttp"
            exposeUSE_UNAUTHORIZED_STORAGE: "true"
           - WOPI_ENABLED: "1984true"
        volumesexpose:
            - "basexdata:/srv/basex/data81:80"
    tika:        - image"8443: 443"6kare/tika"
    clamav:
   restart: always    image: "clamav/clamav:latest"
   expose:     restart: always
     -  9998 expose:
   onlyoffice:         image: onlyoffice/documentserver- 3310
        environmentvolumes:
            USE_UNAUTHORIZED_STORAGE:- "trueclamavdata:/var/lib/clamav"

volumes:
    emkdata:
     WOPI_ENABLEDpgdata:
"true"    basexdata:
    expose:
clamavdata:

CloudFlare Support

To support Cloudflare SSL termination please add the following environment variables to compose file. Please see the SSL termination page for more details.

Code Block
environment:
    -AK_Web__ForwardedHeaders__ClearProxies=true
      - 80
            - 443
volumes:
    pgdata:
    basexdata:
    emkdata:

...

-AK_Web__ForwardedHeaders__ClearKnownNetworks=true
    -AK_Web__ForwardedHeaders__ForwardedForHeaderName=CF-Connecting-IP

Compose File With Load Balancer

Emakin also supports the load balancer scenarios with HAProxy under docker and can be deployed with the following Docker Compose file. Create a new text file with "docker-compose.yml" name and paste following content into file. After saving you can start emakin with the "docker compose up" command.

This sample fires 3 web application clones connected to the same postgres database.

...

languageyaml

...

connected to the same postgres database.

Code Block
languageyaml
version: '4'
services:
  haproxy:
    image: haproxy:latest
    volumes:
      - "./haproxy:/usr/local/etc/haproxy:ro"
    restart: always
    ports:
      - "80:80"
      - "443:443"
      - "7180:7180"
      - "25:25"
      - "587:587"
      - "465:465"
  web1:
    image: 6kare/emakin:8.5
    hostname: emakinapp1
    expose:
      - "80"
      - "5000"
    volumes:
      - "ftdata:/ftdata"
    depends_on:
      - redis
      - postgres
      - basex
      - tika
    volumes:
      - "./haproxyemkdata:/usrapp/local/etc/haproxy:roConfiguration/Data"
    restartenvironment:
  always     ports:- AK_DbProvider=PostgreSql
      - "80:80"AK_DbConnStr=Host=postgres;Database=ALTIKARE;Username=ALTIKARE;Password=ALTIKARE;
      - "443:443"AK_RedisConnStr=redis,allowAdmin=true
      - "7180:7180" AK_BasexConnStr=http://admin:admin@basex:1984/
      - "25:25"AK_TikaConnStr=http://tika:9998/tika
      - "587:587"AK_WopiConnStr=http://onlyoffice:81/hosting/discovery
      - "465:465"AK_AntivirusServerUrl=tcp://clamav:3310
  web1web2:
    image: 6kare/emakin:latest8.5
    hostname: emakinapp1emakinapp2
    expose:
      - "80"
      - "50007180"
    volumes:       - "ftdata25:/ftdata25"
    depends_on:       - redis"587:587"
      - postgres"465:465"
    volumes:
 - basex       - tika- "emkdata:/app/Configuration/Data"
      environmentdepends_on:
      - AK_DbConnStr=Host=postgres;Database=ALTIKARE;Username=ALTIKARE;Password=ALTIKARE;redis
      - AK_RedisConnStr=redis,allowAdmin=truepostgres
      - AK_BasexConnStr=http://admin:admin@basex:1984/basex
      - AK_TikaConnStr=http://tika:9998/tika
      - AK_FULLTEXTCATALOGPATH=/ftdataonlyoffice
    web2environment:
      image: 6kare/emakin:latest- AK_DbProvider=PostgreSql
     hostname: emakinapp2
- AK_DbConnStr=Host=postgres;Database=ALTIKARE;Username=ALTIKARE;Password=ALTIKARE;
   expose:       - "80"- AK_RedisConnStr=redis,allowAdmin=true
      - "7180"AK_BasexConnStr=http://admin:admin@basex:1984/
      - "25:25"AK_TikaConnStr=http://tika:9998/tika
      - "587:587"AK_WopiConnStr=http://onlyoffice:81/hosting/discovery
      - "465:465"AK_AntivirusServerUrl=tcp://clamav:3310
  web3:
 volumes:   image: 6kare/emakin:8.5
   - "ftdata:/ftdata"hostname: emakinapp3
    depends_onexpose:
      - redis"80"
      - postgres"7180"
      - basex"25:25"
      - tika"587:587"
      - onlyoffice"465:465"
    environmentvolumes:
      - AK_DbConnStr=Host=postgres;Database=ALTIKARE;Username=ALTIKARE;Password=ALTIKARE;"emkdata:/app/Configuration/Data"
      - AK_RedisConnStr=redis,allowAdmin=truedepends_on:
      - AK_BasexConnStr=http://admin:admin@basex:1984/redis
      - AK_TikaConnStr=http://tika:9998/tikapostgres
      - AK_FULLTEXTCATALOGPATH=/ftdatabasex
   web3:   - tika
image: 6kare/emakin:latest     hostname:- emakinapp3onlyoffice
    exposeenvironment:
      - "80"AK_DbProvider=PostgreSql
      - "7180"AK_DbConnStr=Host=postgres;Database=ALTIKARE;Username=ALTIKARE;Password=ALTIKARE;
      - "25:25"AK_RedisConnStr=redis,allowAdmin=true
      - "587:587"AK_BasexConnStr=http://admin:admin@basex:1984/
      - "465:465"
    volumes:AK_TikaConnStr=http://tika:9998/tika
      - "ftdata:/ftdata"
    depends_on:AK_WopiConnStr=http://onlyoffice:81/hosting/discovery
      - redisAK_AntivirusServerUrl=tcp://clamav:3310
  postgres:
    -image: "postgres"
    restart: always
- basex    volumes:
  - tika      # - onlyoffice
    environment:"/var/run/postgres/postgres.sock:/var/run/postgres/postgres.sock"
      - AK_DbConnStr=Host=postgres;Database=ALTIKARE;Username=ALTIKARE;Password=ALTIKARE;
   "pgdata:/var/lib/postgresql/data"
  - AK_RedisConnStr=redis,allowAdmin=true  environment:
      - AKPOSTGRES_BasexConnStr=http://admin:admin@basex:1984/USER=ALTIKARE
      - AKPOSTGRES_TikaConnStr=http://tika:9998/tikaPASSWORD=ALTIKARE
      - AKPOSTGRES_FULLTEXTCATALOGPATHDB=/ftdataALTIKARE
  postgresredis:
    image: "postgres"
    restart: alwaysredis:alpine"
    volumesexpose:

     # - "/var/run/postgres/postgres.sock:/var/run/postgres/postgres.sock6379"
  basex:
   - image: "pgdata:/var/lib/postgresql/data6kare/basex"
    environmentexpose:
      - POSTGRES_USER=ALTIKARE
  "1984"
   - POSTGRES_PASSWORD=ALTIKARE volumes:
      - POSTGRES_DB=ALTIKARE"basexdata:/srv/basex/data"
  redistika:
    image: "redis:alpine"6kare/tika2"
    restart: always
    expose:
      - "6379" 9998
  onlyoffice:
     basex:image: onlyoffice/documentserver
    imageenvironment:
 "basex/basexhttp"     exposeUSE_UNAUTHORIZED_STORAGE: "true"
     - WOPI_ENABLED: "1984true"
    volumesexpose:
      - "basexdata:/srv/basex/data81:80"
  tika:    - image: "6kare/tika"8443:443"
clamav:
   restart: always     exposeimage: "clamav/clamav:latest"
     - 9998   onlyofficerestart: always
   image: onlyoffice/documentserver     environmentexpose:
      USE_UNAUTHORIZED_STORAGE: "true"     - 3310
WOPI_ENABLED: "true"     expose:  volumes:
    - 80       - 443"clamavdata:/var/lib/clamav"
volumes:
  pgdata:
  basexdata:
  ftdata:

...