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"]
|