...

Установка OnlyOffice DocumentServer 7.3.3 с помощью docker, docker-compose

Тема в разделе "ELMA365 On-Premises", создана пользователем kroshikhin, 24 авг 2023.

  1. kroshikhin

    kroshikhin Участник

    Входные данные:
    1. Есть необходимость в использовании OnlyOffice (далее OO) для системы ELMA365
    2. Необходимо установить используя docker, docker-compose (далее docker-c) для удобства кастомизации, настроек, подключения шрифтов и т.п.
    Если вы хотить OnlyOffice в kubernetis - кластере, где работает система ELMA365, вы можете воспользоваться этим мануалом вендора: https://elma365.com/ru/help/platform/install-onlyoffice.html
    А еще в соседнем разделе описан пример установки OnlyOffice через пакетный менеджер snap: https://community.elma365.com/ru/threads/221/
  2. kroshikhin

    kroshikhin Участник

    Решение:
    1. Скачать необходимый дистрибутив ОО docker-c с официальной страницы разработчиков, в данном случае это v7.3.3.60: https://github.com/ONLYOFFICE/Docker-DocumentServer/tree/v7.3.3.60
    2. Произвести настройку файла Dockerfile по данному примеру
    Содержимое Dockerfile (необходимо указать тут конкретную версию 7.3.3):
    Код:
    
    ARG BASE_IMAGE=ubuntu:22.04


    FROM 
    ${BASE_IMAGE} as documentserver
    LABEL maintainer Ascensio System SIA 
    <support@onlyoffice.com>


    ARG PG_VERSION=14


    ENV LANG
    =en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8 DEBIAN_FRONTEND=noninteractive PG_VERSION=${PG_VERSION}


    ARG ONLYOFFICE_VALUE=onlyoffice


    RUN 
    echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.&& \
        
    apt-get -y update && \
        
    apt-get -yq install wget apt-transport-https gnupg locales lsb-release && \
        
    locale-gen en_US.UTF-&& \
        echo 
    ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true debconf-set-selections && \
        
    apt-get -yq install \
            
    adduser \
            
    apt-utils \
            
    bomstrip \
            
    certbot \
            
    curl \
            
    gconf-service \
            
    htop \
            
    libasound2 \
            
    libboost-regex-dev \
            
    libcairo2 \
            
    libcurl3-gnutls \
            
    libcurl4 \
            
    libgtk-3-\
            
    libnspr4 \
            
    libnss3 \
            
    libstdc++\
            
    libxml2 \
            
    libxss1 \
            
    libxtst6 \
            
    mysql-client \
            
    nano \
            
    net-tools \
            
    netcat-openbsd \
            
    nginx-extras \
            
    postgresql \
            
    postgresql-client \
            
    pwgen \
            
    rabbitmq-server \
            
    redis-server \
            
    software-properties-common \
            
    sudo \
            
    supervisor \
            
    ttf-mscorefonts-installer \
            
    xvfb \
            
    zlib1g && \
        if [  $(
    ls -/usr/share/fonts/truetype/msttcorefonts wc -l) -ne 61 ]; \
            
    then echo 'msttcorefonts failed to download'; exit 1fi  && \
        echo 
    "SERVER_ADDITIONAL_ERL_ARGS=\"+S 1:1\"" tee -/etc/rabbitmq/rabbitmq-env.conf && \
        
    sed -"s/bind .*/bind 127.0.0.1/g" /etc/redis/redis.conf && \
        
    sed 's|\(application\/zip.*\)|\1\n    application\/wasm wasm;|' -/etc/nginx/mime.types && \
        
    pg_conftool $PG_VERSION main set listen_addresses 'localhost' && \
        
    service postgresql restart && \
        
    sudo -u postgres psql -"CREATE USER $ONLYOFFICE_VALUE WITH password '$ONLYOFFICE_VALUE';" && \
        
    sudo -u postgres psql -"CREATE DATABASE $ONLYOFFICE_VALUE OWNER $ONLYOFFICE_VALUE;" && \
        
    service postgresql stop && \
        
    service redis-server stop && \
        
    service rabbitmq-server stop && \
        
    service supervisor stop && \
        
    service nginx stop && \
        
    rm -rf /var/lib/apt/lists/*


    COPY config /app/ds/setup/config/
    COPY run-document-server.sh /app/ds/run-document-server.sh


    EXPOSE 80 443


    ARG COMPANY_NAME=onlyoffice
    ARG PRODUCT_NAME=documentserver
    ARG PRODUCT_EDITION=
    ARG PACKAGE_VERSION=7.3.3
    ARG TARGETARCH
    ARG PACKAGE_BASEURL="http://download.onlyoffice.com/install/documentserver/linux"


    ENV COMPANY_NAME=$COMPANY_NAME \
        PRODUCT_NAME=$PRODUCT_NAME \
        PRODUCT_EDITION=$PRODUCT_EDITION \
        DS_DOCKER_INSTALLATION=true


    RUN PACKAGE_FILE="${COMPANY_NAME}-${PRODUCT_NAME}${PRODUCT_EDITION}${PACKAGE_VERSION:+_$PACKAGE_VERSION}_${TARGETARCH:-$(dpkg --print-architecture)}.deb" && \
        wget -q -P /tmp "$PACKAGE_BASEURL/$PACKAGE_FILE" && \
        apt-get -y update && \
        service postgresql start && \
        apt-get -yq install /tmp/$PACKAGE_FILE && \
        service postgresql stop && \
        service supervisor stop && \
        chmod 755 /app/ds/*.sh && \
        rm -f /tmp/$PACKAGE_FILE && \
        rm -rf /var/log/$COMPANY_NAME && \
        rm -rf /var/lib/apt/lists/*


    VOLUME /var/log/$COMPANY_NAME /var/lib/$COMPANY_NAME /var/www/$COMPANY_NAME/Data /var/lib/postgresql /var/lib/rabbitmq /var/lib/redis /usr/share/fonts/truetype/custom


    ENTRYPOINT ["/app/ds/run-document-server.sh"]
    2. Произвести настройку файла docker-compose по данному примеру
    Содержимое docker-compose (произвести настройку каталогов для работы/шрифтов, отключение jwt):

    Код:
    
    version'2'
    services:
      
    onlyoffice-documentserver:
        
    build:
          
    context: .
        
    container_nameonlyoffice-documentserver
        image
    onlyoffice/documentserver:7.3.3
        depends_on
    :
          - 
    onlyoffice-postgresql
          
    onlyoffice-rabbitmq
        environment
    :
          - 
    DB_TYPE=postgres
          
    DB_HOST=onlyoffice-postgresql
          
    DB_PORT=5432
          
    DB_NAME=onlyoffice
          
    DB_USER=onlyoffice
          
    AMQP_URI=amqp://guest:guest@onlyoffice-rabbitmq
          # Uncomment strings below to enable the JSON Web Token validation.
          
    JWT_ENABLED=false
          
    JWT_SECRET=my_jwt_secret onlyoff
          
    #- JWT_SECRET=secret
          #- JWT_HEADER=Authorization
          #- JWT_IN_BODY=true
        
    ports:
          - 
    '80:80'
          
    '443:443'
        
    stdin_opentrue
        restart
    always
        stop_grace_period
    60s
        volumes
    :
           - /
    usr/onlyoffice_data/Data:/var/www/onlyoffice/Data
           
    - /usr/onlyoffice_data/Log:/var/log/onlyoffice
           
    - /usr/onlyoffice_data/documentserver/App_Data/cache/files:/var/lib/onlyoffice/documentserver/App_Data/cache/files
           
    - /usr/onlyoffice_data/documentserver-example/public/files:/var/www/onlyoffice/documentserver-example/public/files
           
    - /usr/share/fonts:/usr/share/fonts
         
      onlyoffice
    -rabbitmq:
        
    container_nameonlyoffice-rabbitmq
        image
    rabbitmq
        restart
    always
        expose
    :
          - 
    '5672'


      
    onlyoffice-postgresql:
        
    container_nameonlyoffice-postgresql
        image
    postgres:9.5
        environment
    :
          - 
    POSTGRES_DB=onlyoffice
          
    POSTGRES_USER=onlyoffice
          
    POSTGRES_HOST_AUTH_METHOD=trust
        restart
    always
        expose
    :
          - 
    '5432'
        
    volumes:
          - 
    postgresql_data:/var/lib/postgresql


    volumes
    :
      
    postgresql_data
    3. Произвести установку OO docker-c c помощью стандартной команды
    Код:
    
    sudo docker-compose up -d –-build
    
    
    Дождаться завершения и убедиться, что все контейнеры запущены и работают с помощью команды
    Код:
    
    sudo docker-pc -
    Все контейнеры должны быть в статусе Up
    :

    [
    CODE]7e5e1990882d   onlyoffice/documentserver:7.3.3   "/app/ds/run-documen…"   8 days ago   Up 2 days   0.0.0.0:80->80/tcp, :::80->80/tcp0.0.0.0:443->443/tcp, :::443->443/tcp   onlyoffice-documentserver
    b9d886386806   rabbitmq                          
    "docker-entrypoint.s…"   8 days ago   Up 2 days   4369/tcp5671-5672/tcp15691-15692/tcp25672/tcp                        onlyoffice-rabbitmq
    cf5b1fc876f4   postgres
    :9.5                      "docker-entrypoint.s…"   8 days ago   Up 2 days   5432/tcp                                                                   onlyoffice-postgresql
    Далее необходимо перейти на страницу с адресом машины, где вы устанавливали ОО, и включить example mode
    [​IMG]

    Пример команда для включения example mode(у вас будет свой ID)
    Код:
    
    sudo docker exec 4597ea486e60 sudo supervisorctl start ds:example
    
    
    3. Поздравляю! Установку OnlyOffice для системы ELMA365 используя docker, docker-compose можно считать успешной.

    ЗЫ: Данный пример содержит минимальный набор настроек и может быть существенно расширен, поэтому добро пожаловать в комментарии ;)