File size: 2,706 Bytes
09a3d56
 
 
 
 
 
 
 
 
 
 
 
 
 
6146297
 
85eb84f
 
6146297
09a3d56
 
 
 
6146297
 
85eb84f
 
6146297
09a3d56
 
a88a14d
2f8e52c
 
 
09a3d56
2f8e52c
 
 
 
 
 
09a3d56
2f8e52c
09a3d56
 
cd591c9
2f8e52c
09a3d56
 
 
 
6146297
 
85eb84f
 
6146297
09a3d56
 
 
6146297
85eb84f
6146297
2f8e52c
09a3d56
 
2f8e52c
09a3d56
2f8e52c
 
09a3d56
2f8e52c
 
09a3d56
 
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
# Multi-stage build for Go programs
FROM golang:1.24-alpine AS go-builder

WORKDIR /go-build

# Copy Go module files
COPY go.mod go.sum ./

# Download Go dependencies
RUN go mod download

# Copy Go source files
COPY func/dk_nhl_go ./func/dk_nhl_go
COPY func/fd_nhl_go ./func/fd_nhl_go
COPY func/dk_nba_go ./func/dk_nba_go
COPY func/fd_nba_go ./func/fd_nba_go
COPY func/dk_nfl_go ./func/dk_nfl_go
COPY func/fd_nfl_go ./func/fd_nfl_go
COPY func/showdown_go ./func/showdown_go

# Build the Go programs for Linux
RUN CGO_ENABLED=0 GOOS=linux go build -o dk_nhl_seed ./func/dk_nhl_go/NHL_seed_frames.go
RUN CGO_ENABLED=0 GOOS=linux go build -o fd_nhl_seed ./func/fd_nhl_go/NHL_seed_frames.go
RUN CGO_ENABLED=0 GOOS=linux go build -o dk_nba_seed ./func/dk_nba_go/NBA_seed_frames.go
RUN CGO_ENABLED=0 GOOS=linux go build -o fd_nba_seed ./func/fd_nba_go/NBA_seed_frames.go
RUN CGO_ENABLED=0 GOOS=linux go build -o dk_nfl_seed ./func/dk_nfl_go/NFL_seed_frames.go
RUN CGO_ENABLED=0 GOOS=linux go build -o fd_nfl_seed ./func/fd_nfl_go/NFL_seed_frames.go
RUN CGO_ENABLED=0 GOOS=linux go build -o showdown_seed ./func/showdown_go/showdown_seed_frames.go

# Python stage
FROM python:3.11-slim

WORKDIR /app

# Install system dependencies
RUN apt-get update && apt-get install -y \
    build-essential \
    curl \
    git \
    && rm -rf /var/lib/apt/lists/*

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

# Copy Python source files (only what's needed)
COPY src/ ./src/

# Copy compiled Go binaries from builder stage
COPY --from=go-builder /go-build/dk_nhl_seed ./dk_nhl_go/NHL_seed_frames
COPY --from=go-builder /go-build/fd_nhl_seed ./fd_nhl_go/NHL_seed_frames
COPY --from=go-builder /go-build/dk_nba_seed ./dk_nba_go/NBA_seed_frames
COPY --from=go-builder /go-build/fd_nba_seed ./fd_nba_go/NBA_seed_frames
COPY --from=go-builder /go-build/dk_nfl_seed ./dk_nfl_go/NFL_seed_frames
COPY --from=go-builder /go-build/fd_nfl_seed ./fd_nfl_go/NFL_seed_frames
COPY --from=go-builder /go-build/showdown_seed ./showdown_go/showdown_seed_frames

# Make Go binaries executable
RUN chmod +x ./dk_nhl_go/NHL_seed_frames ./fd_nhl_go/NHL_seed_frames
RUN chmod +x ./dk_nba_go/NBA_seed_frames ./fd_nba_go/NBA_seed_frames
RUN chmod +x ./dk_nfl_go/NFL_seed_frames ./fd_nfl_go/NFL_seed_frames
RUN chmod +x ./showdown_go/showdown_seed_frames

# Create .streamlit directory for config
RUN mkdir -p .streamlit

# Expose Streamlit port
EXPOSE 8501

# Health check
HEALTHCHECK CMD curl --fail http://localhost:8501/_stcore/health

# Run Streamlit app
ENTRYPOINT ["streamlit", "run", "src/streamlit_app.py", "--server.port=8501", "--server.address=0.0.0.0"]