Установка 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, если планируете переходить на, например, четвёртую версию.

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

Подписаться
Уведомить о
guest

23 комментариев
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
TonyVinci
TonyVinci
1 месяц назад

Доброго времени. Спасибо за подробную и понятную инструкцию. Всё получилось.
Есть вопрос есть ли такая же инструкция для rpm систем? Хочу поднять на отечественных ОС, а в нашем случае там только rpm пакеты.
Буду благодарен за подробный ответ или ссылку на таковую инструкцию.

szalukaev
szalukaev
6 месяцев назад

Ребята подскажите!
Вроде все сделал по инструкции, Redmine завелся и работает, но в настройках почты пишет
«Параметры работы с почтовым сервером не настроены и функция уведомления по email не активна.
Настроить параметры для Вашего SMTP-сервера Вы можете в файле config/configuration.yml. Для применения изменений перезапустите приложение.»

Файл по инструкции сделал:
 production:
  email_delivery:
   delivery_method: :smtp
   smtp_settings:
    enable_starttls_auto: true
    address: «smtp.mail.ru»
    port: 587
    domain: «smtp.mail.ru»
    authentication: :plain
    user_name: «redmine******@mail.ru»
    password: «*********»

szalukaev
szalukaev
6 месяцев назад
Ответить на  DiDim

Да само собой!
В 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
    — ./storage/configuration.yml:/usr/src/redmine/config/configuration.yml
   environment:
    REDMINE_DB_POSTGRES: «postgres»
    REDMINE_DB_USERNAME: «postgres»
    REDMINE_DB_PASSWORD: «strong_pass»
    REDMINE_DB_DATABASE: «redmine»
    REDMINE_SECRET_KEY_BASE: «…»
   restart: always

Влад
Влад
1 год назад

Подскажите, если кто знает, как привязать доменное имя к redmine который находится в docker. Я сделал все по инструкции выше, все запускается и работает. Потом я hostland.ru купил доменное имя, но вот как теперь привязать его к redmine пока не разобрался. Что удивительно, в инете тоже путного ничего не нашел.

Евгений
Евгений
3 лет назад

Ещё бы про установку плагинов статейку

Василий
Василий
3 лет назад

Спасибо за статью! Судя по страничке redmine в docker hub, теперь нужно указывать переменную REDMINE_PLUGINS_MIGRATE=true
чтобы при старте контейнера устанавливались плагины

Василий
Василий
3 лет назад
Ответить на  DiDim

В стандартном redmine имэдже файл docker-entrypoint.sh есть: https://github.com/docker-library/redmine/blob/f5895d1d4bff53a590b6048e294dc96b26206883/4.1/Dockerfile#L141

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

Рустам
Рустам
3 лет назад

Спасибо за полезную статью.
Подскажите пожалуйста как настроить работу через HTTPS на официальном образе redmine ?
(как генерировать сертификаты я разобрался , но дальше не получается. Параметр REDMINE_HTTPS=true в docker-compose.yml игнорируется)

Александр
3 лет назад

Проблема — отсутсвует кнопка «новая задача» на панели задач.
p.s. Права есть, пробовал на разных пользователях, проект новый, делал по инструкции выше

ф
ф
3 лет назад

у меня при добавлении почты выходит такая ошибка:
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

Леонид
Леонид
3 лет назад

Как добавить доменное имя?

Иван
Иван
4 лет назад

Вы мне очень помогли, большое спасибо!

andrey
andrey
4 лет назад

а где, собственно, сам Redmine?