# syntax = docker/dockerfile:1

# Make sure RUBY_VERSION matches the Ruby version in .ruby-version and Gemfile
ARG RUBY_VERSION=3.3.9
FROM docker.io/library/ruby:$RUBY_VERSION-slim as base

# OS Level Dependencies
RUN --mount=type=cache,target=/var/cache/apt \
  --mount=type=cache,target=/var/lib/apt,sharing=locked \
  --mount=type=tmpfs,target=/var/log \
  rm -f /etc/apt/apt.conf.d/docker-clean; \
  echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache; \
  apt-get update -qq \
  && apt-get install -yq --no-install-recommends \
    build-essential \
    cmake \
    ruby-dev \
    gnupg2 \
    less \
    git \
    unixodbc \
    unixodbc-dev \
    tdsodbc \
    freetds-dev \
    libvips \
    libpq-dev \
    curl \
    libjemalloc2 \
    pkg-config \
    python3-dev \
    wget \
    libtool \
    libssl-dev && \
    rm -rf /var/lib/apt/lists/*

ARG WATCHMAN_VERSION=v2025.11.10.00
WORKDIR /tmp
RUN git clone https://github.com/facebook/watchman.git -b ${WATCHMAN_VERSION} --depth 1 && \
    cd watchman && \
    ./autogen.sh && \
    ./configure && \
    make && \
    make install

# Download and install Watchman from the pre-compiled binary
# RUN curl -L https://github.com/facebook/watchman/archive/refs/tags/v${WATCHMAN_VERSION}.zip -o watchman.zip \
#     && unzip watchman.zip \
#     && rm watchman.zip \
#     && cd watchman-${WATCHMAN_VERSION} \
#     && mkdir -p /usr/local/{bin,lib} /usr/local/var/run/watchman \
#     && chmod 755 /usr/local/bin/watchman \
#     && chmod 2777 /usr/local/var/run/watchman \
#     && cd .. \
#     && rm -fr ${WATCHMAN_VERSION}

# OS Level Dependencies
# RUN --mount=type=cache,target=/var/cache/apt \
#   --mount=type=cache,target=/var/lib/apt,sharing=locked \
#   --mount=type=tmpfs,target=/var/log \
#   rm -f /etc/apt/apt.conf.d/docker-clean; \
#   echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache; \
#   apt-get update -qq \
#   && apt-get install -yq --no-install-recommends \
#     build-essential \
#     ruby-dev \
#     gnupg2 \
#     less \
#     git \
#     unixodbc \
#     unixodbc-dev \
#     tdsodbc \
#     freetds-dev \
#     libvips \
#     libpq-dev \
#     curl \
#     libjemalloc2 \
#     pkg-config \
#     libtool \
#     libssl-dev && \
#     rm -rf /var/lib/apt/lists/*

ENV LANG=C.UTF-8 \
  BUNDLE_JOBS=4 \
  BUNDLE_RETRY=3

WORKDIR /usr/src/app

ENTRYPOINT ["./bin/docker-entrypoint-development"]

EXPOSE 3002

CMD ["./bin/rails", "server"]
