# Development Dockerfile for MEV Bot with branch selection support # Usage: docker build --build-arg GIT_BRANCH=master-dev -f Dockerfile.dev -t mev-bot:dev . # Build stage FROM golang:1.25-alpine AS builder # Install build dependencies for CGO-enabled packages and git RUN apk add --no-cache git build-base # Set working directory WORKDIR /app # Accept git branch as build argument (defaults to master-dev) ARG GIT_BRANCH=master-dev ENV GIT_BRANCH=${GIT_BRANCH} # Copy all files (including .git for branch info) COPY . . # Set Go environment ENV GOCACHE=/go/cache ENV CGO_ENABLED=1 # Download dependencies RUN go mod download # Build the application RUN go build -o bin/mev-bot cmd/mev-bot/main.go # Final stage - Development image with more tools FROM alpine:latest # Install runtime dependencies for development RUN apk --no-cache add \ ca-certificates \ git \ bash \ curl \ vim \ htop # Create a non-root user RUN adduser -D -s /bin/bash mevbot # Set working directory WORKDIR /app # Copy the binary from builder stage COPY --from=builder /app/bin/mev-bot . # Copy config files COPY --from=builder /app/config ./config # Change ownership to non-root user RUN chown -R mevbot:mevbot /app # Switch to non-root user USER mevbot # Expose ports EXPOSE 8080 9090 # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \ CMD pgrep -f mev-bot || exit 1 # Command to run the application ENTRYPOINT ["./mev-bot"] CMD ["start"]