ecos-app

Назначение

Образ, включающий контейнер сервлетов Tomcat с предварительно сформированным комплектом вебархивов, конфигурационных файлов для webapp и предустановленными инструментами.

Теги

<docker-registry>/ecos-<ecos project>:tag*

Веб архивы

  • alfresco.war

  • share.war

  • flowable-admin.war

  • flowable-idm.war

  • flowable-modeler.war

  • flowable-rest.war

  • flowable-task.war

  • solr.war

Тег: <docker-registry>/ecs-<ecos project>:tag

Веб архивы:

  • alfresco.war

  • share.war

  • flowable-admin.war

  • flowable-idm.war

  • flowable-modeler.war

  • flowable-rest.war

  • flowable-task.war

Базовые образы

  • centos:centos7 - базовый образ последнего обновления CentOS 7.

  • nexus.citeck.ru/ecs:base - базовый образ на основе centos:centos7. В образ вынесены слои с типовыми инструкциями для переиспользования в итоговых образах.

Шаблон сервиса docker-compose

ecos:
  logging:
    options:
      max-size: "10m"
      max-file: "5"
  container_name: ecos
  restart: unless-stopped
  ports:
    - 9090:9090/tcp
    - 50086:50086/tcp
  expose:
    - 8080/tcp
    - 8443/tcp
  environment:
    - USE_EXTERNAL_AUTH=<EXTERNAL_AUTH
    - DB_HOST=ecos-postgresql
    - ALFRESCO_HOSTNAME=<DOMAIN_NAME
    - ALFRESCO_PROTOCOL=https
    - SHARE_HOSTNAME=<DOMAIN_NAME
    - SHARE_PROTOCOL=https
    - SHARE_PORT=443
    - ALFRESCO_PORT=443
    - FLOWABLE_URL=https://<DOMAIN_NAME
    - MAIL_HOST=<M_HOST
    - MAIL_PORT=<M_PORT
    - DB_NAME=alfresco
    - FLOWABLE_DBNAME=alf_flowable
    - ECOS_EUREKA_INSTANCE_HOST=ecos
    - ECOS_EUREKA_INSTANCE_IP=ecos
    - ECOS_EUREKA_INSTANCE_PORT=8080
    - JHIPSTER_REGISTRY_PASSWORD=alfr3sc0
    - EUREKA_CLIENT_SERVICE_URL_DEFAULTZONE=http://admin:$${jhipster.registry.password}@jhipster-registry:8761/eureka
    - JAVA_OPTS=<BOOTSTRAP_LOCALE -Djava.security.egd=file:///dev/urandom <ECOS_XM <XDEBUG -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=9090 -Dcom.sun.management.jmxremote.rmi.port=9090 -Djava.rmi.server.hostname=<HOST_IP -Dcom.sun.management.jmxremote.password.file=/tmp/alfresco/jmxremote.password -Dcom.sun.management.jmxremote.access.file=/tmp/alfresco/jmxremote.access
  volumes:
    - /opt/ecos/license:/opt/tomcat/shared/classes/alfresco/ecos
    - /opt/ecos/conf:/tmp/alfresco
    - /opt/ecos/content:/content
    - /opt/ecos/shared:/shared
    - /opt/ecos/extract_load:/extract_load
    - /opt/ecos/history_data/:/opt/history/data/
  networks:
    - app_network
  hostname: <HOSTNAME
  image: <ECOS_IMAGE
  stop_grace_period: 1m
  healthcheck:
    test: ["CMD", "curl", "-f", "http://localhost:8080/alfresco"]
    interval: 1m
    timeout: 10s
    retries: 15
  depends_on:
    - ecos-postgresql
    - rabbitmq

Используемые переменные:

  • TWEAK_FLOWABLE - устаревший параметр, на данный момент по дефолту в true, требуется исключить из образа

  • FLOWABLE_REST_API_USERNAME - логин интеграции с flowable

  • FLOWABLE_REST_API_PASSWORD - пароль интеграции с flowable

  • ALFRESCO_HOSTNAME - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • ALFRESCO_PROTOCOL - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco -global.properties

  • SHARE_HOSTNAME - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • SHARE_PROTOCOL - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • ALFRESCO_PORT - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • SHARE_PORT - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • DB_KIND - тип используемой бд (postgresql, mysql). Entrypoint формирует, в зависимости от выбранного параметра следующие переменные: DB_CONN_PARAMS, DB_DRIVER, DB_PORT.

  • DB_USERNAME - логин для подключеня к датасорсу

  • DB_PASSWORD - пароль для подключения к датасорсу

  • DB_NAME - имя базы данных

  • DB_HOST - fqdn or ip узла, где развернут инстанс бд

  • DB_DRIVER - используемый драйвер подключения к датасорсу, фомируется параметром DB_KIND

  • DB_PORT - порт усзла, где развернут инстанс бд, по умолчанию используются дефолтные порты postgresql, mysql

  • SYSTEM_SERVERMODE - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • MAIL_HOST - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • MAIL_PORT - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • MAIL_USERNAME - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • MAIL_PASSWORD - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • MAIL_FROM_DEFAULT - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • MAIL_PROTOCOL - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • MAIL_SMTP_AUTH - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • MAIL_SMTP_STARTTLS_ENABLE - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • MAIL_SMTPS_AUTH - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • MAIL_SMTPS_STARTTLS_ENABLE - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • FTP_PORT - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • CIFS_ENABLED - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • CIFS_SERVER_NAME - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • CIFS_DOMAIN - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • NFS_ENABLED - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • CONTENT_STORE - расположение директорий contenstore/contentstore.deleted по абсолютному пути внутри контейнера

  • TOMCAT_CSRF_PATCH - расположение патча по отключению Tomcat CSRF token filter

  • TOMCAT_CSRF_ENABLED - использование Tomcat CSRF token filter (default true)

  • SOLR_WORKSPACE_PROPERTIES - (ecos image only) директория хранения настроек коллекции workspace solr4

  • SOLR_ARCHIVE_PROPERTIES -(ecos image only) директория хранения настроек коллекции archive solr4

  • SOLR_STORE - (ecos image only) расположение директории хранения индексов solr по абсолютному пути внутри контейнера

  • FLOWABLE_DB_KIND - тип используемой бд (postgresql, mysql). Entrypoint формирует, в зависимости от выбранного параметра следующие переменные: DB_CONN_PARAMS, DB_DRIVER, DB_PORT.

  • FLOWABLE_URL - fqdn or ip обращения к флобл ui

  • FLOWABLE_DB_NAME - имя базы данных

  • FLOWABLE_DB_USERNAME - логин для подключеня к датасорсу

  • FLOWABLE_DB_PASSWORD - пароль для подключения к датасорсу

  • FLOWABLE_DB_HOST - fqdn or ip узла, где развернут инстанс бд

  • FLOWABLE_DB_PORT - порт усзла, где развернут инстанс бд, по умолчанию используются дефолтные порты postgresql, mysql

  • FLOWABLE_DB_CONN_PARAMS - дополнительные параметры подключения к датасорсу

  • LDAP_ENABLED - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • LDAP_KIND - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • LDAP_AUTH_USERNAMEFORMAT - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • LDAP_URL - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • LDAP_DEFAULT_ADMINS - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • LDAP_SECURITY_PRINCIPAL - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • LDAP_SECURITY_CREDENTIALS - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • LDAP_GROUP_SEARCHBASE - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • LDAP_USER_SEARCHBASE - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • LDAP_USER_ATTRIBUTENAME - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • LDAP_GROUP_MEMBER_ATTRIBUTENAME - типовой параметр конфигурации alfresco, при объявлении переопределяет соответствующий параметр в alfresco-global.properties

  • USE_EXTERNAL_AUTH - конфгурирование share-config-custom.xml для использования внешней аутентификации по заголовку.

Известные проблемы

  • Часть событий лога приложений контейнера сервлетов остается внутри котейнера, что приводит к неконтролируему разрастанию overlay слоев контейнера и утилизации дискового ресурса хоста.

  • Часть параметров (отображены в документации типовой параметр конфигурации..) включены во входящиие параметры для entrypoint, часть параметров передается через alfresco-additional.properties, часть параметров находится на readonly слоях образа. Требуется выработка решения по использованию единого подхода к объявлению параметров.

  • Большое количество веб-приложений в составе одного образа, отсутствие возможности формализации используемых ресурсов в рамках веб приложения.

  • Невалидный ImageMagic (ecos image only)

  • Отсутствие контроля за процессами инструментов конвертации в образе (процесс конвертера не первичный, его состояние не влияет на ЖЦ контейнера, но влияет на доступность функционала в развернутом приложении)

  • Большой размер итогового образа (стандартная сборка без использования экспериментальных фич, типа сквоша слоев)

  • Отсутствие мониторинга в разрезе веб-приложения под Prometheus (есть jmx мониторинг через java-gateway zabbix)

Типовой вывод принятых настроек в лог контейнера

Attention!!! All spaces in Environment variables will be deleted!!!
ecos                        | replacing option  flowable.rest-api.username=admin  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | replacing option  flowable.rest-api.password=alfr3sc0  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | replacing option  alfresco.host=ecos-demo.citeck.com  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | replacing option  alfresco.protocol=https  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | replacing option  alfresco.port=443  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | replacing option  share.host=ecos-demo.citeck.com  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | replacing option  share.protocol=https  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | replacing option  share.port=443  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | replacing option  system.serverMode=PRODUCTION  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | replacing option  db.driver=org.postgresql.Driver  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | replacing option  db.username=alfresco  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | replacing option  db.password=alfr3sc0  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | replacing option  db.name=alfresco  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | replacing option  db.url=jdbc:postgresql://ecos-postgresql:5432/alfresco  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | adding option  mail.host=mailhog  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | adding option  mail.port=1025  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | adding option  mail.username=  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | adding option  mail.password=  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | adding option  mail.from.default=alfresco@alfresco.org  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | adding option  mail.protocol=smtp  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | adding option  mail.smtp.auth=false  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | adding option  mail.smtp.starttls.enable=false  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | adding option  mail.smtps.auth=false  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | adding option  mail.smtps.starttls.enable=false  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | replacing option  ftp.port=21  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | adding option  cifs.enabled=false  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | adding option  cifs.Server.Name=localhost  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | adding option  cifs.domain=WORKGROUP  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | adding option  cifs.hostannounce=true  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | adding option  cifs.broadcast=0.0.0.255  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | adding option  cifs.ipv6.enabled=false  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | adding option  nfs.enabled=false  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | adding option  dir.contentstore=/content/contentstore  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | adding option  dir.contentstore.deleted=/content/contentstore.deleted  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | adding option  flowable.modeler.url=https://ecos-demo.citeck.com/flowable-modeler/  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | adding option  flowable.rest-api.url=https://ecos-demo.citeck.com/flowable-rest/  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | adding option  flowable.webapps.deployment.api.url=https://ecos-demo.citeck.com/flowable-task/app-api  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | Flowable api url change skipped
ecos                        | adding option  idm.app.url=https://ecos-demo.citeck.com/flowable-idm/  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | adding option  flowable.db.url=jdbc:postgresql://ecos-postgresql:5432/alf_flowable  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | adding option  flowable.db.username=alfresco  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | adding option  flowable.db.password=alfr3sc0  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | adding option  flowable.db.driver.class.name=org.postgresql.Driver  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | replacing option  data.dir.root=/var/lib/solr4/index  in  /opt/alfresco/solr4/workspace-SpacesStore/conf/solrcore.properties
ecos                        | replacing option  solr.suggester.enabled=false  in  /opt/alfresco/solr4/workspace-SpacesStore/conf/solrcore.properties
ecos                        | replacing option  data.dir.root=/var/lib/solr4/index  in  /opt/alfresco/solr4/archive-SpacesStore/conf/solrcore.properties
ecos                        | adding option  authentication.chain=alfrescoNtlm1:alfrescoNtlm  in  /opt/tomcat/shared/classes/alfresco-global.properties
ecos                        | Flowable connection string: postgresql://ecos-postgresql:5432/alf_flowable
ecos                        | Solr configuration changed!