Обновлен файл docker-compose.yml для использования образа salvagebot и изменения переменных окружения на значения по умолчанию. Изменены пути для логов и изображений. Обновлен Dockerfile для создания рабочей директории с правильными правами. В main.py исправлены ссылки на переменные окружения. Эти изменения упрощают настройку и улучшают структуру проекта.

This commit is contained in:
Vlad 2025-06-06 00:15:56 +03:00
parent 3e1a090fc8
commit df0eb4536a
5 changed files with 35 additions and 96 deletions

View File

@ -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

10
build.cmd Normal file
View File

@ -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%

View File

@ -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

15
main.py
View File

@ -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")
)

BIN
salvagebot Normal file

Binary file not shown.