Как установить OpenProject с помощью Docker Compose: пошаговый гайд
Что тебе понадобится
- Установленный Docker и Docker Compose.
- Базовые знания работы с терминалом.
- Файл
.env
с переменными (я покажу, какие).
Шаг 1: Подготовь файл .env
Создай файл .env
в корне проекта и добавь в него следующие переменные:
# OpenProject Configuration
OPENPROJECT_HOST_NAME=yourdomain.com
OPENPROJECT_HTTPS=true
OPENPROJECT_SECRET_KEY_BASE=your_secure_key
PORT=8080
# PostgreSQL Configuration
POSTGRES_PASSWORD=your_db_password
OPENPROJECT_HOST_NAME
: Домен или IP твоего сервера.OPENPROJECT_HTTPS
: Укажиtrue
, если используешь HTTPS.OPENPROJECT_SECRET_KEY_BASE
: Секретный ключ для безопасности (сгенерируй надёжный!).POSTGRES_PASSWORD
: Пароль для базы данных PostgreSQL.
Шаг 2: Создай файл docker-compose.yml
Вот конфигурация для Docker Compose, которая развернёт OpenProject и PostgreSQL:
services:
db:
image: postgres:15
volumes:
- pgdata:/var/lib/postgresql/data
environment:
- POSTGRES_USER=openproject
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=openproject
healthcheck:
test: ["CMD-SHELL", "pg_isready -U openproject"]
interval: 10s
timeout: 5s
retries: 5
deploy:
resources:
limits:
cpus: "1.0"
memory: 1G
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
restart: unless-stopped
networks:
- openproject-network
web:
image: openproject/openproject:15
depends_on:
db:
condition: service_healthy
volumes:
- opdata:/var/openproject/assets
environment:
- OPENPROJECT_HOST__NAME=${OPENPROJECT_HOST_NAME}
- OPENPROJECT_HTTPS=${OPENPROJECT_HTTPS}
- OPENPROJECT_SECRET_KEY_BASE=${OPENPROJECT_SECRET_KEY_BASE:-your_secure_key}
- DATABASE_URL=postgres://openproject:${POSTGRES_PASSWORD}@db/openproject
- RAILS_ENV=production
- RAILS_MIN_THREADS=4
- RAILS_MAX_THREADS=16
- RAILS_CACHE_STORE=redis
- APACHE_SERVER_NAME=${OPENPROJECT_HOST_NAME}
- APACHE_PORT=80
ports:
- "${PORT}:80"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:80"]
interval: 30s
timeout: 10s
retries: 5
start_period: 120s
deploy:
resources:
limits:
cpus: "3.0"
memory: 6G
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
restart: unless-stopped
networks:
- openproject-network
volumes:
pgdata:
name: openproject_pgdata
opdata:
name: openproject_opdata
networks:
openproject-network:
driver: bridge
Разберём, что тут происходит:
-
Сервис
db
:- Использует образ PostgreSQL 15.
- Хранит данные в томе
pgdata
для сохранения базы. - Healthcheck проверяет готовность базы каждые 10 секунд.
- Ограничения: 1 CPU и 1 ГБ RAM.
-
Сервис
web
:- Использует официальный образ OpenProject 15.
- Зависит от
db
и ждёт, пока база будет готова. - Хранит файлы в томе
opdata
. - Порт
8080
(или другой из.env
) пробрасывается наружу. - Healthcheck проверяет доступность OpenProject через HTTP.
- Ограничения: 3 CPU и 6 ГБ RAM.
-
Тома и сети:
pgdata
иopdata
— для сохранения данных.openproject-network
— изолированная сеть для контейнеров.
Шаг 3: Запусти Docker Compose
В терминале выполни:
docker-compose up -d
- Флаг
-d
запускает контейнеры в фоновом режиме. - Дождись, пока контейнеры запустятся (это может занять пару минут).
Шаг 4: Проверь доступность
Открой браузер и перейди по адресу:
- Если
OPENPROJECT_HTTPS=true
, используйhttps://yourdomain.com:8080
. - Если
false
, тоhttp://yourdomain.com:8080
.
Ты должен увидеть страницу входа в OpenProject. По умолчанию:
- Логин:
admin
. - Пароль:
admin
(поменяй его при первом входе!).
Советы по настройке
- HTTPS: Если используешь HTTPS, настрой реверс-прокси (например, через Nginx) и SSL-сертификат.
- Безопасность: Укажи сложный
OPENPROJECT_SECRET_KEY_BASE
иPOSTGRES_PASSWORD
. - Производительность: Если сервер мощный, увеличь
RAILS_MAX_THREADS
для ускорения работы. - Бэкапы: Регулярно сохраняй тома
pgdata
иopdata
.
Заключение
Теперь у тебя есть собственный OpenProject, развёрнутый через Docker Compose! Этот инструмент поможет управлять проектами, задачами и командами, а установка заняла всего 10–15 минут. Если что-то не работает, пиши в контакт — разберёмся вместе!