Добавлен докер и докер-композ

This commit is contained in:
2025-03-10 06:22:21 +03:00
parent 32f9e6e2c8
commit bcfef29207
5 changed files with 82 additions and 1 deletions

28
.dockerignore Normal file
View File

@@ -0,0 +1,28 @@
# Исключаем файлы Git
.git
.gitignore
# Исключаем каталоги виртуальных окружений
venv/
env/
ENV/
# Исключаем кешированные файлы Python
__pycache__/
*.py[cod]
*$py.class
# Исключаем файлы сборки
build/
dist/
# Исключаем конфигурационные файлы IDE
.vscode/
.idea/
# Исключаем системные файлы
.DS_Store
# Не включаем .env с чувствительными данными,
# т.к. переменные передаются через переменные окружения контейнера
.env

15
Dockerfile Normal file
View File

@@ -0,0 +1,15 @@
FROM python:3.13-slim
RUN apt-get update && apt-get install -y ffmpeg && apt-get clean && rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY MusicBot /app/MusicBot
ENV PYTHONPATH=/app
# Команда для запуска бота
CMD ["python", "./MusicBot/main.py"]

View File

@@ -1,3 +1,4 @@
import os
from typing import Iterable, Any, cast
from pymongo import AsyncMongoClient, ReturnDocument, UpdateOne
from pymongo.asynchronous.collection import AsyncCollection
@@ -6,7 +7,8 @@ from pymongo.results import UpdateResult
from .user import User, ExplicitUser
from .guild import Guild, ExplicitGuild, MessageVotes
client: AsyncMongoClient = AsyncMongoClient("mongodb://localhost:27017/")
mongo_server = os.getenv('MONGO_URI')
client: AsyncMongoClient = AsyncMongoClient(mongo_server)
db = client.YandexMusicBot
users: AsyncCollection[ExplicitUser] = db.users

33
docker-compose.yml Normal file
View File

@@ -0,0 +1,33 @@
services:
app:
container_name: yandex-music-discord-bot
image: deadcxap/yandexmusicdiscordbot:latest
restart: unless-stopped
depends_on:
- mongodb
env_file:
- .env
environment:
MONGO_URI: "mongodb://ymdb-mongodb:27017"
networks:
- ymdb_network
mongodb:
container_name: ymdb-mongodb
image: mongo:latest
restart: unless-stopped
volumes:
- mongodb_data:/data/db
- ./init-mongodb.js:/docker-entrypoint-initdb.d/init-mongodb.js:ro
networks:
- ymdb_network
healthcheck:
test: echo 'db.runCommand("ping").ok' | mongo localhost:27017 --quiet
interval: 30s
timeout: 10s
retries: 5
volumes:
mongodb_data:
networks:
ymdb_network:

3
init-mongodb.js Normal file
View File

@@ -0,0 +1,3 @@
db = db.getSiblingDB('YandexMusicBot');
db.createCollection('guilds');
db.createCollection('users');