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.
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.
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.
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.
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.
version: '4' services: web: image: 6kare/emakin:latest hostname: emakinapp ports: - "80:80" - "443:443" - "7180:7180" - "25:25" - "587:587" - "465:465" depends_on: - redis - postgre - basex - tika - onlyoffice volumes: - "emkdata:/data" environment: - AK_DbProvider=Postgre - AK_DbConnStr=Host=postgre;Database=ALTIKARE;Username=ALTIKARE;Password=ALTIKARE; - AK_RedisConnStr=redis,allowAdmin=true - AK_BasexConnStr=http://admin:admin@basex:1984/ - AK_TikaConnStr=http://tika:9998/tika - AK_FULLTEXTCATALOGPATH=/data/ft postgre: image: "postgres" restart: always volumes: # - "/var/run/postgres/postgres.sock:/var/run/postgres/postgres.sock" - "pgdata:/var/lib/postgresql/data" environment: - POSTGRES_USER=ALTIKARE - POSTGRES_PASSWORD=ALTIKARE - POSTGRES_DB=ALTIKARE redis: image: "redis:alpine" expose: - "6379" basex: image: "basex/basexhttp" expose: - "1984" volumes: - "basexdata:/srv/basex/data" tika: image: "6kare/tika" restart: always expose: - 9998 onlyoffice: image: onlyoffice/documentserver environment: USE_UNAUTHORIZED_STORAGE: "true" WOPI_ENABLED: "true" expose: - 80 - 443 volumes: pgdata: basexdata: emkdata:
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.
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:latest hostname: emakinapp1 expose: - "80" - "5000" volumes: - "ftdata:/ftdata" depends_on: - redis - postgres - basex - tika environment: - AK_DbConnStr=Host=postgres;Database=ALTIKARE;Username=ALTIKARE;Password=ALTIKARE; - AK_RedisConnStr=redis,allowAdmin=true - AK_BasexConnStr=http://admin:admin@basex:1984/ - AK_TikaConnStr=http://tika:9998/tika - AK_FULLTEXTCATALOGPATH=/ftdata web2: image: 6kare/emakin:latest hostname: emakinapp2 expose: - "80" - "7180" - "25:25" - "587:587" - "465:465" volumes: - "ftdata:/ftdata" depends_on: - redis - postgres - basex - tika - onlyoffice environment: - AK_DbConnStr=Host=postgres;Database=ALTIKARE;Username=ALTIKARE;Password=ALTIKARE; - AK_RedisConnStr=redis,allowAdmin=true - AK_BasexConnStr=http://admin:admin@basex:1984/ - AK_TikaConnStr=http://tika:9998/tika - AK_FULLTEXTCATALOGPATH=/ftdata web3: image: 6kare/emakin:latest hostname: emakinapp3 expose: - "80" - "7180" - "25:25" - "587:587" - "465:465" volumes: - "ftdata:/ftdata" depends_on: - redis - postgres - basex - tika - onlyoffice environment: - AK_DbConnStr=Host=postgres;Database=ALTIKARE;Username=ALTIKARE;Password=ALTIKARE; - AK_RedisConnStr=redis,allowAdmin=true - AK_BasexConnStr=http://admin:admin@basex:1984/ - AK_TikaConnStr=http://tika:9998/tika - AK_FULLTEXTCATALOGPATH=/ftdata postgres: image: "postgres" restart: always volumes: # - "/var/run/postgres/postgres.sock:/var/run/postgres/postgres.sock" - "pgdata:/var/lib/postgresql/data" environment: - POSTGRES_USER=ALTIKARE - POSTGRES_PASSWORD=ALTIKARE - POSTGRES_DB=ALTIKARE redis: image: "redis:alpine" expose: - "6379" basex: image: "basex/basexhttp" expose: - "1984" volumes: - "basexdata:/srv/basex/data" tika: image: "6kare/tika" restart: always expose: - 9998 onlyoffice: image: onlyoffice/documentserver environment: USE_UNAUTHORIZED_STORAGE: "true" WOPI_ENABLED: "true" expose: - 80 - 443 volumes: pgdata: basexdata: ftdata:
HAProxy configuration
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