Paydirt_model_updates / Dockerfile
James McCool
Adding NFL functionality
85eb84f
# 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"]