# SPDX-FileCopyrightText: 2026 Doug Slater <https://slater.dev>
# SPDX-License-Identifier: AGPL-3.0-only

FROM node:24-bookworm AS build
ARG GLEAM_VERSION=1.14.0
RUN curl -fsSL "https://github.com/gleam-lang/gleam/releases/download/v${GLEAM_VERSION}/gleam-v${GLEAM_VERSION}-$(uname -m)-unknown-linux-musl.tar.gz" \
  | tar -xz -C /usr/local/bin
WORKDIR /src
COPY chow chow
COPY chow_ui chow_ui
COPY chow_server chow_server
RUN cd chow_ui && npm ci && VITE_CHOW_SAME_ORIGIN=1 npx vite build
RUN cd chow_server && gleam build

FROM node:24-bookworm-slim
RUN apt-get update \
  && apt-get install -y --no-install-recommends sqlite3 curl unzip ca-certificates \
  && rm -rf /var/lib/apt/lists/* \
  && mkdir /data && chown node:node /data
WORKDIR /app
COPY --from=build /src/chow_server/build/dev/javascript build/dev/javascript
COPY --from=build /src/chow_server/data data
COPY --from=build /src/chow_ui/dist /page
ENV PORT=8080 CHOW_DATA=/data CHOW_PAGE=/page
USER node
VOLUME /data
EXPOSE 8080
CMD ["node", "--disable-warning=ExperimentalWarning", "build/dev/javascript/chow_server/index.mjs"]
