Установка redmine через docker-compose

Иногда возникает задача развернуть, например, redmine по-быстрому и без всяких премудростей, чтобы сразу приступить к своим задачам. Чтобы долго не тупить над ошибками во время установки, можно поступить проще и использовать контейнеризацию, а конкретно, многим уже известный Docker.

Информация бралась с сайта https://kostya.openyoga.ru/it-notes/установка-redmine-через-docker-compose.html, который на 28 мая 2019 уже даже не резолвился.

P.S. [2020.07.16] Актуализировал редмайн на версию 4.1. И поправил небольшие баги в тексте.

Но так как контейнеры все же в сути своей неизменяемые сущности и, просто запустив redmine и базу данных без подготовки, можно любоваться на сделанные изменения до перезапуска контейнера, то после его остановки надо всё начинать сначала. Это если в общих чертах.

Поэтому были придуманы разные способы для выноса данных, которые необходимо сохранять. Здесь я не буду упоминать слои докера и тому подобное, мысль веду к тому, что нужно вынести отдельно некоторые директории, в которых будут важные и необходимые данные.

Поэтому начнём с быстрой установки docker и затем перейдём к установке redmine через docker-compose.

Начальные условия:

  • ОС: Ubuntu 18.04, но это не принципиально, просто команды указаны для Debian-like среды,
  • БД — Postgresql

Ставим Docker

Обновляем список пакетов

sudo apt update

Устанавливаем требуемые компоненты

sudo apt install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common -y

Устанавливаем ключ из официального репозитория.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
 | sudo apt-key add - 

Проверяем, что ключ установился:

sudo apt-key fingerprint 0EBFCD88

В выводе команды долго содержаться словосочетание «Docker release (CE deb)»

Устанавливаем репозиторий стабильной версии

sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

Обновляем систему

sudo apt update

Устанавливаем docker и docker-compose

sudo apt install -y docker-ce docker-compose 

Настраиваем Docker

Добавим себя (например, пусть наш логин будет administrator) в группу docker, чтобы не писать каждый раз sudo при выполнении команд

sudo usermod -aG docker administrator

Создадим под проект папку

mkdir ~/docker && cd ~/docker 

Создадим Dockerfile со следующим содержимым

nano Dockerfile
FROM redmine:4.1
RUN apt-get update

Dockerfile нам понадобится для создания кастомного образа Redmine. Например, если для какого то плагина нужно установить зависимости, мы просто дописываем команды для установки зависимостей в Dockerfile после инструкции RUN.

Создаём docker-compose.yml файл с таким содержимым:

nano docker-compose.yml
version: '3.3'
services:
   postgres:
     image: postgres:10
     volumes:
       - ./storage/postgresql-data:/var/lib/postgresql/data
     environment:
       POSTGRES_PASSWORD: "strong_pass"
       POSTGRES_DB: "redmine"
       PGDATA: "/var/lib/postgresql/data"
     restart: always
   redmine:
     build:
       context: .
     image: redmine:custom
     ports:
       - 80:3000
     volumes:
       - ./storage/docker_redmine-plugins:/usr/src/redmine/plugins
       - ./storage/docker_redmine-themes:/usr/src/redmine/public/themes
       - ./storage/docker_redmine-data:/usr/src/redmine/files
     environment:
       REDMINE_DB_POSTGRES: "postgres"
       REDMINE_DB_USERNAME: "postgres"
       REDMINE_DB_PASSWORD: "strong_pass"
       REDMINE_DB_DATABASE: "redmine"
       REDMINE_SECRET_KEY_BASE: "…"
     restart: always

Как видите, в docker-compose.yml создаются несколько точек проброса (или volumes) в которых хранятся база данных, файлы тем, загружаемые пользователями файлы и файлы плагинов, которые всегда можно найти на https://www.redmine.org/plugins/

Все эти папки доступны в хостовой системе по пути, указанному выше: ~/docker/storage/

Теперь при запуске контейнера по пути ~/docker/storage/ будут созданы следующие папки: в папке postgresql-data будут храниться файлы базы данных, в папке docker_redmine-plugins — плагины, в docker_redmine-themes — темы (вдруг кто пользуется ими), в docker_redmine-data — файлы, прикрепляемые к задачам в redmine.

В основном всё готово. Можно выполнить docker-compose up и, дождавшись скачивания необходимых образов, увидеть строки, говорящие, что всё прошло успешно.

Запуск

docker-compose up

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

Если хочется ещё и отправки уведомлений на почту, то пишем файл configuration.yml

nano ~/docker/storage/configuration.yml 

с примерно таким содержимым. Настройки почты для каждого отдельного сервиса, будь то gmail, yandex или rambler свои

 production:
   email_delivery:
     delivery_method: :smtp
     smtp_settings:
       enable_starttls_auto: true
       address: "smtp.gmail.com"
       port: 587
       domain: "smtp.gmail.com"
       authentication: :plain
       user_name: "your_email@gmail.com"
       password: "password" 

В файл docker-compose.yml вставляем после строк с вынесенными вовне директориями следующую строку

- ./docker/storage/configuration.yml:/usr/src/redmine/config/configuration.yml

Redmine готов к работе.

Обновлять его достаточно просто. Для обновления версии redmine нужно всего лишь выполнить две команды

docker-compose build  
docker-compose restart

Установка плагинов:

Плагины можно скопировать git’ом в папку docker_redmine-plugins или иным удобным способом и после выполнить docker-compose restart

В файле Dockerfile можно указать нужную версию redmine, если планируете переходить на, например, четвёртую версию.

На этом пока всё. Возможны небольшие доработки в статье

7 thoughts on “Установка redmine через docker-compose

  1. ф

    у меня при добавлении почты выходит такая ошибка:
    cs800671:~/redmine$ docker-compose build
    postgres uses an image, skipping
    Building redmine
    Traceback (most recent call last):
    File «bin/docker-compose», line 6, in
    File «compose/cli/main.py», line 72, in main
    File «compose/cli/main.py», line 128, in perform_command
    File «compose/cli/main.py», line 304, in build
    File «compose/project.py», line 397, in build
    File «compose/project.py», line 380, in build_service
    File «compose/service.py», line 1104, in build
    File «site-packages/docker/api/build.py», line 160, in build
    File «site-packages/docker/utils/build.py», line 30, in tar
    File «site-packages/docker/utils/build.py», line 49, in exclude_paths
    File «site-packages/docker/utils/build.py», line 214, in rec_walk
    File «site-packages/docker/utils/build.py», line 214, in rec_walk
    File «site-packages/docker/utils/build.py», line 184, in rec_walk
    PermissionError: [Errno 13] Permission denied: ‘/home/artddss/redmine/storage/postgresql-data’
    [53787] Failed to execute script docker-compose

    1. DiDim Автор записи

      Кажется, мой косяк в описании yaml-файла. Не сделал необходимые отступы после слова «async_smtp_settings».
      Поправлю.

    1. DiDim Автор записи

      Если вы имеете в виду сделать доступ к редмайну по доменному имени, а не по IP (что в общем так и делается), то я бы сделал проксированием через nginx. nginx по идее может быть даже запущен на том же самом хосте.
      Иные случаи уже тянут на целую статью и сильно «монолитят» текущую инсталляцию. Это надо и LetsEncrypt настраивать и сертификаты в виртуальные директории прокидывать. Если надо, то скажите — попробую помочь.
      Но лучше через обратную проксю.

    1. DiDim Автор записи

      А сам Redmine будет доступен по адресу машины, на которой крутится docker на порту 80, если судить по конфигу файла docker-compose.yml

Добавить комментарий

Ваш адрес email не будет опубликован.