Docker арқылы Hub-ты орналастыруға арналған қадамдық нұсқаулық
Docker арқылы орнату
Бір сервер үшін ұсынылатын әдіс. Hub-тың бір Docker-образы (bidder-hub) қосымшаны — REST API мен веб-интерфейсті бір портта (8082) — іске қосады, ал қатарына PostgreSQL көтеріледі. Фронтенді бар жеке контейнер жоқ: веб-интерфейсті Hub өзі береді.
Бастамас бұрын Docker орнатылып, іске қосылғанына көз жеткізіңіз: Docker қосымшасы (Docker Desktop) ашық және жұмыс істеуі керек. Іске қосылмаған Docker-де docker compose командалары орындалмайды.
1-қадам. docker-compose.yml файлын жасаңыз
Серверде Hub үшін бөлек қалта жасаңыз (мысалы, bidder-hub) — онда орналастыру файлдарының екеуі де жатады. Осы қалтада келесі мазмұнмен docker-compose.yml файлын жасаңыз:
x-logging: &default-logging
driver: json-file
options:
max-size: "20m"
max-file: "5"
services:
hub:
image: ${HUB_IMAGE}
ports:
- "${HUB_PORT:-8082}:8082"
- "${HUB_MANAGEMENT_PORT:-8081}:8081"
environment:
TZ: UTC
SPRING_PROFILES_ACTIVE: "PROD,COMPOSE"
MANAGEMENT_SERVER_PORT: "${HUB_MANAGEMENT_PORT:-8081}"
JAVA_OPTS: "${JAVA_OPTS:--Xmx512m -Xms256m -XX:+UseG1GC -Duser.timezone=UTC}"
DATABASE_URL: "${DATABASE_URL:-r2dbc:postgresql://postgres:5432/hub}"
DATABASE_JDBC_URL: "${DATABASE_JDBC_URL:-jdbc:postgresql://postgres:5432/hub}"
DATABASE_USERNAME: "${DATABASE_USERNAME:-hub}"
DATABASE_PASSWORD: "${DATABASE_PASSWORD}"
DATABASE_POOL_INITIAL_SIZE: "${DATABASE_POOL_INITIAL_SIZE:-5}"
DATABASE_POOL_MAX_SIZE: "${DATABASE_POOL_MAX_SIZE:-10}"
DATABASE_POOL_MAX_IDLE_TIME: "${DATABASE_POOL_MAX_IDLE_TIME:-30m}"
HUB_NAME: "${HUB_NAME:-Hub}"
HUB_ADMIN_USERNAME: "${HUB_ADMIN_USERNAME}"
HUB_ADMIN_PASSWORD: "${HUB_ADMIN_PASSWORD}"
CORE_GRPC_HOST: "${CORE_GRPC_HOST}"
CORE_PORTAL_URL: "${CORE_PORTAL_URL}"
CIPHER_SALT: "${CIPHER_SALT}"
LOG_PATH: "/tmp/logs"
volumes:
- ${HUB_LOG_DIR:-./logs}:/tmp/logs
logging: *default-logging
depends_on:
postgres:
condition: service_healthy
restart: unless-stopped
postgres:
image: postgres:16-alpine
command: ["postgres", "-c", "timezone=UTC", "-c", "log_timezone=UTC"]
environment:
POSTGRES_DB: hub
POSTGRES_USER: hub
POSTGRES_PASSWORD: "${DATABASE_PASSWORD}"
PGTZ: UTC
TZ: UTC
ports:
- "${POSTGRES_PORT:-5432}:5432"
volumes:
- hub-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U hub -d hub"]
interval: 5s
timeout: 5s
retries: 5
logging: *default-logging
restart: unless-stopped
volumes:
hub-data:
2-қадам. .env файлын жасаңыз
docker-compose.yml жанында, сол қалтада, .env файлын жасаңыз — онда Hub баптаулары сақталады. Төмендегі үлгіні оған көшіріңіз:
# Hub образы. Реестр оқуға ашық — авторизация қажет емес.
# Қажет болғанда, өзекті нұсқаны (тегті) вендордан нақтылаңыз.
HUB_IMAGE=cr.yandex/crph7576m5ukcpvf6o0t/bidder-hub:1.0.8
# Core-ға қосылу
CORE_GRPC_HOST=grpc.bidder-box.ru
CORE_PORTAL_URL=app.bidder-box.ru
# Дерекқор — сенімді құпия сөз ойлап табыңыз
DATABASE_PASSWORD=
# Hub-тің алғашқы әкімшісі
HUB_ADMIN_USERNAME=admin
HUB_ADMIN_PASSWORD=
# Шифрлау тұзы — кездейсоқ жол (мысалы, openssl rand -hex 32)
CIPHER_SALT=
Образ мекенжайы мен Core-ға қосылу параметрлері толтырылған — тек құпия сөздер мен тұзды енгізу қалды (келесі қадам).
3-қадам. Құпия сөздер мен тұзды толтырыңыз
.env файлын кез келген мәтіндік редактормен ашып, бос мәндерді толтырыңыз:
Міндетті параметрлер
| Айнымалы | Не жазу керек |
|---|---|
DATABASE_PASSWORD | Дерекқор үшін сенімді құпия сөз ойлап табыңыз |
HUB_ADMIN_USERNAME | Hub-тің алғашқы әкімшісінің логині (әдепкі бойынша admin) |
HUB_ADMIN_PASSWORD | Әкімшінің сенімді құпия сөзін ойлап табыңыз |
CIPHER_SALT | Деректерді шифрлауға арналған тұз — кездейсоқ символдар жиынтығы |
HUB_IMAGE, CORE_GRPC_HOST және CORE_PORTAL_URL үлгіде толтырылған — оларды өзгертудің қажеті жоқ.
CIPHER_SALT қалай алу керек. Бұл жай ғана кездейсоқ символдардың ұзын жолы — оны кез келген ыңғайлы тәсілмен генерациялаңыз: мысалы, браузерден «онлайн тұз генерациялау» сұрауы бойынша табыңыз немесе жай ғана пернетақтада кездейсоқ пернелерді басыңыз.
HUB_ADMIN_USERNAME, DATABASE_PASSWORD, HUB_ADMIN_PASSWORD және CIPHER_SALT мәндерін қауіпсіз жерде сақтаңыз. Алғашқы іске қосудан кейін оларды дерекқорды қайта жасамай өзгертуге болмайды.
Міндетті емес параметрлер
| Айнымалы | Әдепкі бойынша | Сипаттамасы |
|---|---|---|
HUB_PORT | 8082 | Веб-интерфейс пен REST API үшін хост порты (Hub браузерде осында қолжетімді) |
HUB_MANAGEMENT_PORT | 8081 | Қызметтік эндпоинттер порты: жағдайды тексеру (/actuator/health) және метрикалар |
POSTGRES_PORT | 5432 | Дерекқор контейнерден сыртқа қолжетімді болатын порт. Дерекқорға тікелей қосылатын болсаңыз ғана керек (мысалы, әкімшілік құралымен). Бос қалдырыңыз — сонда PostgreSQL Docker ішінде тек Hub үшін қолжетімді болады (қауіпсіздеу) |
HUB_NAME | Hub | Интерфейсте Hub-тің көрсетілу атауы |
JAVA_OPTS | -Xmx512m -Xms256m -XX:+UseG1GC | JVM параметрлері |
Дерекқор параметрлері (сыртқы PostgreSQL қолданғанда)
Әдепкі бойынша PostgreSQL жеке контейнерде іске қосылады. Сыртқы дерекқорды қолдану үшін үш айнымалыны бір мезгілде беріңіз — Hub R2DBC-ті (реактивті қолжетімділік) де, JDBC-ті (Liquibase-миграциялары үшін) де пайдаланады:
| Айнымалы | Әдепкі бойынша | Сипаттамасы |
|---|---|---|
DATABASE_URL | r2dbc:postgresql://postgres:5432/hub | Дерекқордың R2DBC URL-і |
DATABASE_JDBC_URL | jdbc:postgresql://postgres:5432/hub | Liquibase-миграциялар үшін JDBC URL |
DATABASE_USERNAME | hub | Дерекқор пайдаланушысы |
4-қадам. Hub-ты іске қосыңыз
Терминалды ашып, cd командасымен docker-compose.yml және .env файлдары бар қалтаға өтіп, іске қосу командасын орындаңыз:
docker compose up -d
Алғашқы іске қосу кезінде келесілер орындалады:
HUB_ADMIN_USERNAME / HUB_ADMIN_PASSWORD-тен әкімші тіркелгісі жасалады.5-қадам. Hub іске қосылғанын тексеріңіз
Браузерде веб-интерфейсті ашыңыз — оны Hub өзі API-мен бірдей портта береді:
http://localhost:8082/
Егер Hub-тың кіру/байланыстыру беті ашылса — бәрі жұмыс істейді, белсендіруге көшуге болады.
(қаласаңыз, терминалдан) Hub жауабын келесі командамен тексеруге болады:
curl http://localhost:8082/public/api/v1/activation/status
Егер бет ашылмаса немесе бірдеңе дұрыс болмаса — қараңыз: Ақауларды жою.
Логтарды қарау
docker compose logs -f hub
docker compose logs -f postgres
Hub-ты жаңарту
docker compose exec postgres pg_dump -U hub hub > backup_$(date +%Y%m%d_%H%M%S).sql
.env-тегі HUB_IMAGE мәнін жаңа тегке жаңартыңыз (вендор береді).docker compose pull hub
docker compose up -d hub
http://localhost:8082/ мекенжайын ашыңыз немесе орындаңыз:
curl http://localhost:8082/public/api/v1/activation/status
Алдыңғы нұсқаға қайту
docker compose stop hub
docker compose exec -T postgres psql -U hub hub < backup_YYYYMMDD_HHMMSS.sql
.env-тегі HUB_IMAGE-тің алдыңғы мәнін қайтарыңыз.docker compose up -d hub
Резервтік көшірме
docker compose exec postgres pg_dump -U hub hub > backup_$(date +%Y%m%d_%H%M%S).sql
Қалпына келтіру:
docker compose exec -T postgres psql -U hub hub < backup_YYYYMMDD_HHMMSS.sql
Hub-ты жаңартар алдында әрқашан дерекқордың резервтік көшірмесін жасаңыз.
Келесі қадам
Сәтті іске қосудан кейін Hub-ты белсендіріп, Core-ға қосыңыз.