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

Для начала ответим на вопрос, а зачем нам устанавливать redmine вручную, а не воспользоваться готовым образом от какого нибудь хостинга? Ответ будет кратким: затем, что если мы его установим вручную, то redmine будет гораздо более легко обновлять, устанавливать на него плагины и так далее. То есть, он будет более управляемым.

Итак, нам понадобится Ubuntu 16.04 сервер (для недорогой аренды сервера от Digital Ocean перейдите по ссылке https://m.do.co/c/5d91ae26962f). Я пользуюсь сервером с 512мб ОЗУ и 20Gb SSD за 5 долларов в месяц.

Шаг 1. Установка docker и docker-compose

Обновляемся:

sudo apt-get update

Устанавливаем зависимости:

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

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

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-get update

Теперь устанавливаем Docker:

sudo apt-get install -y docker-ce

И docker-compose:

sudo apt-get install -y docker-compose

Итак, мы установили docker и docker-compose.

Шаг 2. Создание Dockerfile и docker-compose.yml

Создаём папку проекта и переходим в нее:

mkdir /opt/redmine && cd /opt/redmine

Создаём Dockerfile с таким содержимым:

vim Dockerfile

FROM redmine:3.4.3
RUN apt-get update

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

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

vim docker-compose.yml

version: '2.0'

volumes:
  redmine-plugins:
  redmine-themes:
  redmine-data:
  redmine-models:

services:
  mysql:
    image: mysql:5.7
    volumes:
      - /srv/storage/redmine/mysqlconf:/etc/mysql/conf
.d
      - /srv/storage/redmine/mysqldata:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: "AnyPassword"
      MYSQL_DATABASE: "redmine"
    restart: always

  redmine:
    build:
      context: .
    image: redmine:custom
    ports:
      - 3000:3000
    volumes:
      - redmine-plugins:/usr/src/redmine/plugins
      - redmine-themes:/usr/src/redmine/public/themes
      - redmine-data:/usr/src/redmine/files
      - redmine-models:/usr/src/redmine/app/models/
      - /srv/storage/redmine/configuration.yml:/usr/sr
c/redmine/config/configuration.yml
    environment:
      REDMINE_DB_MYSQL: "mysql"
      REDMINE_DB_USERNAME: "root"
      REDMINE_DB_PASSWORD: "AnyPassword"
      REDMINE_SECRET_KEY_BASE: "..."
    restart: always

Как вы видите, в docker-compose мы создаём несколько volumes. Во-первых, чтобы при рестарте контейнеров не терялись данные БД. Во-вторых, для удобной установки плагинов и тем. Например, для установки плагинов в будущем нам понадобится только лишь загрузить плагин в папку /var/lib/docker/volumes/redmine_redmine-plugins/_data, а затем рестартовать проект с помощью команды docker-compose restart.

Создаём папки для mysql конфига и данных БД:

mkdir -p /srv/storage/redmine/mysqlconf

mkdir /srv/storage/redmine/mysqldata

Создаём mysql конфиг со следующим содержимым:

vim /srv/storage/redmine/mysqlconf/custom.cnf

[mysqld]
character-set-server = utf8
collation-server = utf8_unicode_ci
skip-character-set-client-handshake

Обязательно создаём конфиг redmine, чтобы у нас отправлялись сообщения, с таким содержимым:

vim /srv/storage/redmine/configuration.yml

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"

Вместо gmail smtp может быть любой другой smtp сервер, разумеется.

Шаг 3. Запуск redmine

Заходим в папку с проектом:

cd /opt/redmine

Запускаем redmine:

sudo docker-compose up -d

Теперь наш редмайн доступен по адресу:
serverip:3000

Но нам то ведь надо, чтобы редмайн был доступен на 80 порту и по нашему доменному имени, не так ли? Для этого есть следующий шаг.

Шаг 4. Установка nginx и проксирование на redmine

Установим nginx:

sudo apt-get install nginx

И создадим конфиг с таким содержимым:

vim /etc/nginx/conf.d/redmine.conf

server {
server_name HOSTNAME;
listen 80;
access_log /var/log/nginx/redmine.log;
error_log /var/log/nginx/redmine_error.log;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
}
}

HOSTNAME замените на доменное имя вашего сайта.

Теперь рестартуем nginx:

service nginx restart

Теперь ваш redmine доступен по доменному имени, указанному в конфиге nginx.

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

  1. Здравствуйте, а почему nginx не засунуть в конфигурацию докер-компос, чтобы не засорть клиентскую машину?

    1. Здравствуйте! Ответ — с моей точки зрения так удобно, если у вас на одном сервере много сайтов.

Добавить комментарий для kostya Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *