diff --git a/.env.example b/.env.example index 0563255..24244a0 100644 --- a/.env.example +++ b/.env.example @@ -8,3 +8,6 @@ TELEGRAM_BOT_USERNAME=YOUR_BOT_USERNAME_HERE # Пароль для базы данных PostgreSQL POSTGRES_PASSWORD=StrongPasswordForDatabase + +# Локальный порт веб-интерфейса GM-Relay +GMRELAY_WEB_PORT=8080 diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 79135e7..dc8aa28 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -6,7 +6,7 @@ on: - main env: - VERSION: 1.1.4 + VERSION: 1.1.5 jobs: # ЧАСТЬ 1: Собираем образы и кладем в Gitea (чтобы делиться с ребятами) diff --git a/Directory.Build.props b/Directory.Build.props index 3d14da8..11fb28f 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,6 +1,6 @@ - 1.1.4 + 1.1.5 net10.0 preview enable diff --git a/README.md b/README.md index c8c1d05..0e4d48f 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,9 @@ TELEGRAM_BOT_USERNAME=ваше_имя_бота_здесь # Пароль для базы данных PostgreSQL POSTGRES_PASSWORD=ваш_надежный_пароль + +# Локальный порт веб-интерфейса GM-Relay +GMRELAY_WEB_PORT=8080 ``` *(Опционально)* Настройте домен Telegram бота в @BotFather командой `/setdomain` для работы виджета авторизации на вашем сайте. @@ -72,12 +75,13 @@ POSTGRES_PASSWORD=ваш_надежный_пароль ### 3. Запуск Выполните команду: ```bash -docker compose up -d -build +docker compose up -d ``` Инфраструктура автоматически: -- Поднимет PostgreSQL. +- Создаст локальную Docker-сеть и volume PostgreSQL, если их ещё нет. +- Поднимет PostgreSQL, доступный для контейнеров как `db:5432`. - Запустит бота (применив миграции БД). -- Запустит веб-интерфейс (доступен по умолчанию на порту **8080** внутри контейнера). +- Запустит веб-интерфейс на `http://localhost:8080` или другом порту из `GMRELAY_WEB_PORT`. --- diff --git a/compose.yaml b/compose.yaml index 47b5f8c..05e9fbc 100644 --- a/compose.yaml +++ b/compose.yaml @@ -1,16 +1,15 @@ services: db: image: postgres:17-alpine - container_name: gmrelay_db restart: always environment: POSTGRES_USER: gmrelay - POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env} POSTGRES_DB: gmrelay_db volumes: - pgdata:/var/lib/postgresql/data - ports: - - "5432:5432" + networks: + - gmrelay healthcheck: test: [ "CMD-SHELL", "pg_isready -U gmrelay -d gmrelay_db" ] interval: 3s @@ -18,35 +17,40 @@ services: retries: 10 bot: - image: git.codeanddice.ru/toutsu/gmrelay-bot:1.1.4 - container_name: gmrelay_bot + image: git.codeanddice.ru/toutsu/gmrelay-bot:1.1.5 restart: always - network_mode: host depends_on: db: condition: service_healthy environment: - - "ConnectionStrings__gmrelaydb=Host=127.0.0.1;Port=5432;Database=gmrelay_db;Username=gmrelay;Password=${POSTGRES_PASSWORD}" - - "Telegram__BotToken=${TELEGRAM_BOT_TOKEN}" + - "ConnectionStrings__gmrelaydb=Host=db;Port=5432;Database=gmrelay_db;Username=gmrelay;Password=${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env}" + - "Telegram__BotToken=${TELEGRAM_BOT_TOKEN:?Set TELEGRAM_BOT_TOKEN in .env}" + networks: + - gmrelay web: - image: git.codeanddice.ru/toutsu/gmrelay-web:1.1.4 - container_name: gmrelay_web + image: git.codeanddice.ru/toutsu/gmrelay-web:1.1.5 restart: always - network_mode: host depends_on: db: condition: service_healthy environment: - - "ConnectionStrings__gmrelaydb=Host=127.0.0.1;Port=5432;Database=gmrelay_db;Username=gmrelay;Password=${POSTGRES_PASSWORD}" - - "Telegram__BotToken=${TELEGRAM_BOT_TOKEN}" - - "Telegram__BotUsername=${TELEGRAM_BOT_USERNAME}" + - "ConnectionStrings__gmrelaydb=Host=db;Port=5432;Database=gmrelay_db;Username=gmrelay;Password=${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env}" + - "Telegram__BotToken=${TELEGRAM_BOT_TOKEN:?Set TELEGRAM_BOT_TOKEN in .env}" + - "Telegram__BotUsername=${TELEGRAM_BOT_USERNAME:?Set TELEGRAM_BOT_USERNAME in .env}" + ports: + - "${GMRELAY_WEB_PORT:-8080}:8080" volumes: - web_keys:/app/dataprotection-keys + networks: + - gmrelay volumes: pgdata: - external: true - name: game_pgdata + name: ${POSTGRES_VOLUME_NAME:-game_pgdata} web_keys: - name: gmrelay_web_keys + name: ${WEB_KEYS_VOLUME_NAME:-gmrelay_web_keys} + +networks: + gmrelay: + driver: bridge