File size: 2,839 Bytes
200c0e9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c1648a3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3e97a63
7ffe51d
 
3e97a63
7ffe51d
 
3e97a63
7ffe51d
 
200c0e9
7ffe51d
 
 
4b49493
 
 
3e97a63
7ffe51d
200c0e9
7ffe51d
 
3e97a63
200c0e9
 
3e97a63
cac2b72
7525a49
 
3e97a63
 
 
 
 
7ffe51d
3e97a63
7ffe51d
 
3e97a63
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# # Use Python 3.11 slim image
# FROM python:3.11-slim

# # Set working directory
# WORKDIR /app

# # Install system dependencies
# RUN apt-get update && apt-get install -y \
#     gcc \
#     postgresql-client \
#     && rm -rf /var/lib/apt/lists/*

# # Copy requirements first for better caching
# COPY requirements.txt .

# # Install Python dependencies
# RUN pip install --no-cache-dir -r requirements.txt

# # Copy application code
# COPY . .

# # Expose port 7860 (Hugging Face Spaces default)
# EXPOSE 7860

# # Run database migrations and start the application
# CMD alembic upgrade head && uvicorn src.main:app --host 0.0.0.0 --port 7860


# # =========================
# # Base Image
# # =========================
# FROM python:3.11-slim

# # Set working directory
# WORKDIR /app

# # =========================
# # Install system dependencies
# # =========================
# RUN apt-get update && apt-get install -y \
#     gcc \
#     libpq-dev \
#     postgresql-client \
#     && rm -rf /var/lib/apt/lists/*

# # =========================
# # Copy requirements first (cache optimization)
# # =========================
# COPY requirements.txt .

# # Upgrade pip and install Python dependencies
# RUN pip install --upgrade pip
# RUN pip install --no-cache-dir -r requirements.txt

# # =========================
# # Copy app source code
# # =========================
# COPY src/ ./src


# # Copy alembic config
# COPY alembic.ini .

# # =========================
# # Copy specs folder to match expected absolute path
# # =========================
# COPY specs/ /specs/

# # =========================
# # Expose port (for FastAPI / Hugging Face Spaces)
# # =========================
# EXPOSE 7860

# # =========================
# # Run migrations and start app
# # =========================
# CMD alembic upgrade head && uvicorn src.main:app --host 0.0.0.0 --port 7860


# ////////////////////
# Use slim Python 3.11 image
FROM python:3.11-slim

# Set working directory inside container
WORKDIR /app

# Install system dependencies
RUN apt-get update && apt-get install -y \
    gcc \
    libpq-dev \
    postgresql-client \
    && rm -rf /var/lib/apt/lists/*

RUN pip uninstall -y bcrypt && \
    pip install bcrypt==4.0.1 passlib[bcrypt]==1.7.4

# Copy and install Python dependencies
COPY requirements.txt .
RUN pip install --upgrade pip
RUN pip install --no-cache-dir -r requirements.txt

# Copy source code
COPY src/ ./src

# Copy Alembic migrations and config
COPY src/alembic/ ./alembic/
COPY alembic.ini .

# Copy specs (MCP tools contracts)
COPY specs/ ./specs/

# Set environment variable for working directory (optional, helps paths)
ENV PROJECT_ROOT=/app

# Expose port
EXPOSE 7860

# Run migrations and start the app
CMD ["sh", "-c", "alembic upgrade head && uvicorn src.main:app --host 0.0.0.0 --port 7860 --reload"]