Redmine — веб-приложение, используемое для управления проектами. Redmine легко настроить и персонализировать благодаря поддержке тем и плагинов. В этой статье мы расскажем, как установить Redmine с помощью Docker. В качестве базы данных мы будем использовать Postgres. Файлы приложений с отслеживанием состояния будут храниться в томах, которые мы создадим на нашем сервере.
Ручная установка Redmine в Docker
Запуск Redmine в Docker включает в себя запуск сервера баз данных, в нашем случае это Postgres, а после запуск контейнера самого Redmine, по факту у нас получится приложение состоящее из двух контейнеров. Запуск одинаков, как для Windows так и для Linux. Я работаю в консоли linux ubuntu, но для запуска Redmine под Windows, нужно в консоли выполнить те же самые команды.
Создание сети
Мы начнем с создания сети Docker для связи между Postgres и Redmine. Мы собираемся применить эти команды на одной машине, поэтому создадим промежуточную сеть:
docker network create --driver bridge some-network
Запуск базы данных
Мы упоминали, что будем устанавливать Redmine с Postgres. Теперь давайте запустим Postgres с сетью и томом, которые мы создали выше.:
docker run -d --name some-postgres --network some-network -e POSTGRES_PASSWORD=secret -e POSTGRES_USER=redmine postgres
Запуск Redmine
Для запуска Redmine, мы будем использовать официальный образ с DockerHub:
Наконец, мы можем запустить Redmine, используя адрес базы данных и учетные данные, которые мы только что создали:
docker run -d --name some-redmine --network some-network -p 80:3000 -e REDMINE_DB_POSTGRES=some-postgres -e REDMINE_DB_USERNAME=redmine -e REDMINE_DB_PASSWORD=secret redmine
Проверим, что контейнеры созданы и запущены с помощью команды: docker ps
root@: docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4c79c27b8460 redmine "/docker-entrypoint.…" 12 minutes ago Up 12 minutes 0.0.0.0:80->3000/tcp, :::80->3000/tcp some-redmine
fa422fa55696 postgres "docker-entrypoint.s…" 19 minutes ago Up 19 minutes 5432/tcp some-postgres
584818f1b7e3 portainer/portainer-ce:latest "/portainer" 3 months ago Up 2 months 0.0.0.0:8000->8000/tcp, :::8000->8000/tcp, 0.0.0.0:9443->9443/tcp, :::9443->9443/tcp, 9000/tcp portainer
После этого мы можем открыть браузер и ввести IP-адрес, чтобы увидеть нашу установку. Имя пользователя и пароль по умолчанию — admin — admin.
Перейдем на страницу:
http://localhost/ или http://IP адрес сервера
Изменим пароль администратора.
Запуск Redmine с помощью Docker-compose
То же самое можно сделать проще и быстрее с помощью Docker-compose.
Docker Compose — это инструмент для запуска мультиконтейнерного приложения, которое не зависит от платформы и содержит все необходимые для работы технологии и библиотеки.
Основная фишка Docker Compose в том, что достаточно подготовить yaml файл, в котором необходимо описать все необходимые контейнеры и их параметры, после чего с помощью одной команды можно выполнить их сборку и запуск. Команды выполняются, как под операционной системой Linux так и под Windows.
Создадим папку для файла: docker-compose.yml
mkdir redmine-docker
cd redmine-docker
Перенесем или создадим в каталоге файл docker-compose.yml со следующим содержанием:
version: '3.3'
services:
postgres:
image: postgres:10
volumes:
- ./storage/postgresql-data:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: "PASSWORD"
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: "PASSWORD"
REDMINE_DB_DATABASE: "redmine"
REDMINE_SECRET_KEY_BASE: "…"
restart: always
Для сборки выполните команду:
docker-compose up -d
Резервное копирование Redmine в Docker
Формат команды:
docker exec -i your-db-container /usr/bin/pg_dump \
-U postgresql_user postgresql_database > postgres-backup.sql
Для резервного копирования необходимо сделать бэкап базы данных Postgres:
docker exec -i some-postgres /usr/bin/pg_dump -U redmine postgres > postgres-backup.sql
some-postgres — название контейнера
redmine — пользователь базы данных postgres
postgres — название базы данных postgres
В данном случае бэкап базы данных окажется на сервере с установленным Docker в рабочей папке пользователя.
Восстановление базы данных Redmine в Docker
Формат команды:
cat your_dump.sql | docker exec -i your-db-container psql -U your-db-user -d your-db-name
В нашем случае команда будет выглядеть следующим образом:
docker exec -i some-postgres psql -U redmine postgres