mirror of
https://github.com/sotam0316/drawNET_test.git
synced 2026-04-24 19:48:37 +09:00
추가파일
This commit is contained in:
+35
-14
@@ -1,22 +1,43 @@
|
||||
# 1. 파이썬 3.10 슬림 버전
|
||||
# 1. 베이스 이미지 설정
|
||||
# .so 파일이 Python 3.10용이므로 반드시 3.10 버전을 사용해야 합니다.
|
||||
FROM python:3.10-slim
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# 2. 시스템 패키지 설치
|
||||
# DNS가 해결되었으므로 미러 변경 없이 기본 명령어로 진행합니다.
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
libgl1-mesa-glx \
|
||||
libglib2.0-0 \
|
||||
# 2. 필수 시스템 패키지 설치
|
||||
# 컴파일된 바이너리(.so) 실행에 필요한 라이브러리들을 설치합니다.
|
||||
RUN apt-get update && apt-get install -y \
|
||||
build-essential \
|
||||
libssl-dev \
|
||||
libffi-dev \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# 3. 파이썬 의존성 설치
|
||||
COPY requirements.txt .
|
||||
RUN pip install --no-cache-dir -r requirements.txt || pip install flask requests
|
||||
# 3. 작업 디렉토리 설정
|
||||
WORKDIR /app
|
||||
|
||||
# 4. 전체 파일 복사 (컴파일된 .so 파일 포함)
|
||||
# 4. 의존성 파일 복사 및 설치
|
||||
# 라이브러리 설치를 먼저 해서 빌드 속도를 높입니다.
|
||||
COPY requirements.txt .
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
|
||||
# 5. [핵심] 프로젝트 전체 파일 복사
|
||||
# 윈도우에서 추가한 static/js/lib 폴더를 포함한 모든 파일을 강제로 복사합니다.
|
||||
COPY . .
|
||||
|
||||
# 5. 실행 설정
|
||||
# 확인용 (이게 에러 나면 빌드가 중단되니 바로 알 수 있습니다)
|
||||
RUN ls -R /app/static/js/lib
|
||||
|
||||
# 6. 환경 변수 설정
|
||||
ENV PYTHONDONTWRITEBYTECODE=1
|
||||
ENV PYTHONUNBUFFERED=1
|
||||
ENV FLASK_APP=app.py
|
||||
|
||||
# 7. 실행 권한 부여 (리눅스 환경 대응)
|
||||
# 혹시 모를 권한 문제를 방지하기 위해 정적 파일 경로에 권한을 줍니다.
|
||||
RUN chmod -R 755 /app/static
|
||||
|
||||
# 8. 포트 노출
|
||||
EXPOSE 5000
|
||||
CMD ["python", "app.py"]
|
||||
|
||||
# 9. 실행 명령
|
||||
# gunicorn 대신 flask run을 사용하여 디버깅 모드로 실행합니다.
|
||||
CMD ["python", "app.py"]
|
||||
|
||||
@@ -1,23 +1,55 @@
|
||||
import os
|
||||
import logging
|
||||
import sys
|
||||
from flask import Flask
|
||||
from jinja2 import ChoiceLoader, FileSystemLoader
|
||||
from routes.main_routes import main_bp
|
||||
from routes.api_routes import api_bp
|
||||
|
||||
# 로그 출력 설정 (컨테이너 로그에서 실시간 확인용)
|
||||
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
|
||||
|
||||
def create_app():
|
||||
app = Flask(__name__)
|
||||
|
||||
# Register Blueprints
|
||||
# 템플릿 로더 설정 유지
|
||||
app.jinja_loader = ChoiceLoader([
|
||||
FileSystemLoader(os.path.join(app.root_path, 'templates')),
|
||||
FileSystemLoader(os.path.join(app.root_path, 'tools'))
|
||||
])
|
||||
|
||||
# Blueprints 등록
|
||||
app.register_blueprint(main_bp)
|
||||
app.register_blueprint(api_bp)
|
||||
|
||||
# 진단 로그
|
||||
try:
|
||||
import routes.api_routes as ar
|
||||
import logic.license_manager as lm
|
||||
print(f"[*] API Routes Loaded From: {ar.__file__}")
|
||||
print(f"[*] License Manager Loaded From: {lm.__file__}")
|
||||
except Exception as e:
|
||||
print(f"[!] Error during diagnostic: {e}")
|
||||
|
||||
return app
|
||||
|
||||
try:
|
||||
from routes import api_routes
|
||||
print("[*] API 모듈 로드 성공!")
|
||||
except ImportError as e:
|
||||
print(f"[!] API 모듈 로드 실패: {e}")
|
||||
except Exception as e:
|
||||
print(f"[!] 기타 에러: {e}")
|
||||
|
||||
if __name__ == '__main__':
|
||||
app = create_app()
|
||||
|
||||
# 로컬 실행 최적화
|
||||
print("------------------------------------------")
|
||||
print("drawNET Premium Server Starting...")
|
||||
print("URL: http://127.0.0.1:5000")
|
||||
# 실제 접속 주소 로그 출력 수정
|
||||
print("Binding to: http://0.0.0.0:5000")
|
||||
print("------------------------------------------")
|
||||
|
||||
app.run(debug=True, port=5000)
|
||||
# host='0.0.0.0' 추가가 핵심입니다.
|
||||
# LXC 환경에서는 use_reloader=False를 권장합니다.
|
||||
app.run(debug=True, host='0.0.0.0', port=5000, use_reloader=False)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
drawnet-app:
|
||||
build: .
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user