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

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 typing import Iterable, Any, cast
from pymongo import AsyncMongoClient, ReturnDocument, UpdateOne from pymongo import AsyncMongoClient, ReturnDocument, UpdateOne
from pymongo.asynchronous.collection import AsyncCollection from pymongo.asynchronous.collection import AsyncCollection
@@ -6,7 +7,8 @@ from pymongo.results import UpdateResult
from .user import User, ExplicitUser from .user import User, ExplicitUser
from .guild import Guild, ExplicitGuild, MessageVotes 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 db = client.YandexMusicBot
users: AsyncCollection[ExplicitUser] = db.users 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');