Минимальные ресурсы:
Установите Docker:
docker --versionDocker Compose:
docker composedocker compose version или docker-compose --versionВ инструкции ниже используется команда docker-compose. Если у вас новая версия Docker, замените на docker compose (без дефиса).
Создайте файл docker-compose.yml со следующим содержимым:
version: '3.8'
services:
app:
image: alexes/trip2g:v10
container_name: trip2g-app
restart: unless-stopped
ports:
- "7777:7777"
env_file:
- .env
environment:
- LISTEN_ADDR=:7777
- INTERNAL_LISTEN_ADDR=:7778
- DB_FILE=/app/data/data.sqlite3
- MINIO_ENDPOINT=minio:9000
- MINIO_USE_SSL=false
volumes:
- app-data:/app/data
depends_on:
minio:
condition: service_healthy
networks:
- trip2g-network
minio:
image: minio/minio:latest
container_name: trip2g-minio
restart: unless-stopped
ports:
- "9000:9000"
- "9001:9001"
environment:
MINIO_ROOT_USER: ${MINIO_ROOT_USER}
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD}
command: server /data --console-address ":9001"
volumes:
- minio-data:/data
networks:
- trip2g-network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 5s
timeout: 3s
retries: 10
start_period: 10s
volumes:
app-data:
driver: local
minio-data:
driver: local
networks:
trip2g-network:
driver: bridge
Создайте файл .env и укажите настройки:
# Сгенерируйте секретный ключ: openssl rand -hex 32
JWT_SECRET=ваш-секретный-ключ-32-символа
# Придумайте логин и пароль для MinIO (минимум 8 символов)
MINIO_ROOT_USER=admin
MINIO_ROOT_PASSWORD=ваш-пароль-минимум-8-символов
# Скопируйте сюда те же значения
MINIO_ACCESS_KEY_ID=admin
MINIO_SECRET_KEY=ваш-пароль-минимум-8-символов
# Укажите ваш email для входа
OWNER_EMAIL=admin@example.com
# Для отправки писем зарегистрируйтесь на https://resend.com/ (бесплатный тариф)
RESEND_API_KEY=
MAIL_FROM=no-reply@example.com
docker-compose up
Откройте:
Запустить в фоне:
docker-compose up -d
Посмотреть логи:
docker-compose logs
Остановить:
docker-compose down
Перезапустить:
docker-compose restart
Сохранить базу:
docker cp trip2g-app:/app/data/data.sqlite3 ./backup-$(date +%Y%m%d).sqlite3
Сохранить файлы:
docker run --rm \
-v simple_minio-data:/data \
-v $(pwd):/backup \
alpine tar czf /backup/minio-backup-$(date +%Y%m%d).tar.gz /data
Восстановить базу:
docker cp ./backup.sqlite3 trip2g-app:/app/data/data.sqlite3
docker-compose restart app
Восстановить файлы:
docker run --rm \
-v simple_minio-data:/data \
-v $(pwd):/backup \
alpine tar xzf /backup/minio-backup.tar.gz -C /
docker-compose restart minio
Все настройки в .env. Обязательные:
JWT_SECRET=секрет-32-символа
MINIO_ROOT_USER=admin
MINIO_ROOT_PASSWORD=пароль-минимум-8
MINIO_ACCESS_KEY_ID=admin
MINIO_SECRET_KEY=пароль-минимум-8
OWNER_EMAIL=admin@example.com
# для отправки писам, регистрация на resend.com (бесплатный тариф)
RESEND_API_KEY=
Изменить порт приложения в docker-compose.yml:
ports:
- "8080:7777"
openssl rand -hex 32