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

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

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

Но так как контейнеры все же в сути своей неизменяемые сущности и, просто запустив 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:3.4
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: :async_smtp
     async_smtp_settings:
     enable_starttls_auto: true
     address: "smtp.gmail.com"
     port: '587'
     domain: "smtp.gmail.com"
     authentication: :plain
     user_name: "username"
     password: "password" 

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

- ~/docker/storage/configuration.yml:/usr/sr
c/redmine/config/configuration.yml

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

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

docker-compose build  
docker-compose restart

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

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

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

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

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

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

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

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

Ваш e-mail не будет опубликован.