diff --git a/Dockerfile b/Dockerfile index 368e387..5937e00 100644 --- a/Dockerfile +++ b/Dockerfile @@ -21,11 +21,16 @@ RUN mkdir -p /opt/oracle && \ # Устанавливаем переменные окружения для Oracle ENV ORACLE_HOME=/opt/oracle/instantclient_19_21 -ENV LD_LIBRARY_PATH=/opt/oracle/instantclient_19_21:$LD_LIBRARY_PATH +ENV LD_LIBRARY_PATH=/opt/oracle/instantclient_19_21${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} ENV PATH=/opt/oracle/instantclient_19_21:$PATH # Создаем пользователя для безопасности RUN useradd --create-home --shell /bin/bash salvagebot + +# Создаем рабочую директорию и устанавливаем права +RUN mkdir -p /home/salvagebot/app && \ + chown -R salvagebot:salvagebot /home/salvagebot/app + USER salvagebot WORKDIR /home/salvagebot/app @@ -44,8 +49,9 @@ USER salvagebot # Копируем код приложения COPY --chown=salvagebot:salvagebot . . -# Создаем необходимые директории -RUN mkdir -p logs images data +# Создаем необходимые директории с правильными правами +RUN mkdir -p logs images data && \ + chmod 755 logs images data # Устанавливаем переменные окружения Python ENV PYTHONPATH=/home/salvagebot/app diff --git a/build.cmd b/build.cmd new file mode 100644 index 0000000..28106a9 --- /dev/null +++ b/build.cmd @@ -0,0 +1,10 @@ +@echo off +for /f "tokens=*" %%i in ('powershell -Command "Get-Date -Format 'yyyyMMdd'"') do set TAG=%%i +echo Building with tag: %TAG% +del salvagebot +docker rmi vladsimachkov/salvagebot:%TAG% 2>nul +docker buildx build --no-cache --progress=plain -t vladsimachkov/salvagebot:%TAG% . +docker save vladsimachkov/salvagebot:%TAG% >salvagebot + +#docker tag vladsimachkov/salvagebot:%TAG% reg.ddl.su/salvagedb/salvagenas_filecheker:%TAG% +#docker push reg.ddl.su/salvagedb/salvagenas_filecheker:%TAG% \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 66b0b3d..0970fd8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,9 +2,7 @@ version: '3.8' services: salvagedb-bot: - build: - context: . - dockerfile: Dockerfile + image: vladsimachkov/salvagebot:20250605 container_name: salvagedb-telegram-bot restart: unless-stopped @@ -21,95 +19,17 @@ services: - IMG_PRICE=100 # База данных Oracle - - db_user=your_db_user - - db_password=your_db_password - - db_dsn=localhost:1521/XEPDB1 + - DB_USER=salvagebot + - DB_PASSWORD=salvagebot + - DB_DSN=localhost:1521/XEPDB1 # Настройки приложения - DEBUG=0 - PYTHONUNBUFFERED=1 - - TZ=UTC + - TZ=Europe/Moscow # Монтируем volumes для логов и изображений volumes: - - ./logs:/home/salvagebot/app/logs - - ./images:/home/salvagebot/app/images:ro # read-only для изображений - - ./data:/home/salvagebot/app/data # дополнительные данные если нужны + - /volume2/salvagedb/salvage_bot/logs:/home/salvagebot/app/logs + - /volume2/salvagedb/images:/images - # Настройки сети - networks: - - salvagedb-network - - # Ограничения ресурсов - deploy: - resources: - limits: - memory: 512M - cpus: '0.5' - reservations: - memory: 256M - cpus: '0.25' - - # Политика перезапуска - restart: unless-stopped - - # Зависимости (если есть другие сервисы) - depends_on: [] - - # Логирование - logging: - driver: "json-file" - options: - max-size: "10m" - max-file: "3" - - # Проверка здоровья - healthcheck: - test: ["CMD", "python", "-c", "import sys; sys.exit(0)"] - interval: 30s - timeout: 10s - retries: 3 - start_period: 40s - -# Дополнительные сервисы (если понадобятся) - # nginx: - # image: nginx:alpine - # container_name: salvagedb-nginx - # restart: unless-stopped - # ports: - # - "80:80" - # - "443:443" - # volumes: - # - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro - # - ./nginx/ssl:/etc/nginx/ssl:ro - # networks: - # - salvagedb-network - # depends_on: - # - salvagedb-bot - - # redis: - # image: redis:7-alpine - # container_name: salvagedb-redis - # restart: unless-stopped - # volumes: - # - redis_data:/data - # networks: - # - salvagedb-network - # command: redis-server --appendonly yes - -# Определяем сети -networks: - salvagedb-network: - driver: bridge - ipam: - config: - - subnet: 172.20.0.0/16 - -# Определяем volumes -volumes: - # redis_data: - # driver: local - logs_data: - driver: local - images_data: - driver: local \ No newline at end of file diff --git a/main.py b/main.py index 860e68b..3adefb8 100644 --- a/main.py +++ b/main.py @@ -21,10 +21,13 @@ def setup_logging(): Настройка системы логирования с ротацией файлов и выводом в консоль """ # Создаем каталог logs если он не существует - logs_dir = "logs" + if is_windows(): + logs_dir = "logs" + else: + logs_dir = "/logs/" if not os.path.exists(logs_dir): os.makedirs(logs_dir) - print(f"Created logs directory: {logs_dir}") + print(f"Created logs directory: {logs_dir}") # Определяем уровень логирования if getenv("DEBUG", '0') == '1': @@ -396,13 +399,13 @@ IMG_PRICE = getenv("IMG_PRICE",100) if is_windows(): image_path = "D:\\SALVAGEDB\\salvagedb_bot\\images" else: - image_path = "/images/" + image_path = "/images" oracle_db = OracleDatabase( - user= getenv("db_user"), - password= getenv("db_password"), - dsn= getenv("db_dsn") + user= getenv("DB_USER"), + password= getenv("DB_PASSWORD"), + dsn= getenv("DB_DSN") ) diff --git a/salvagebot b/salvagebot new file mode 100644 index 0000000..6621355 Binary files /dev/null and b/salvagebot differ