FROM rust:alpine AS daemon-builder

WORKDIR /usr/src/coolercontrol

RUN apk add --update nodejs npm
RUN apk add --update libc-dev openssl-dev build-base musl-dev pkgconfig perl protoc

COPY ../../../../coolercontrol-ui ./coolercontrol-ui/
COPY ../../../../coolercontrold ./coolercontrold/
COPY ../../../../Makefile .

RUN make build-daemon


FROM alpine AS liquidctl-builder

RUN apk add --update build-base python3-dev py3-pip gcc libusb musl-dev linux-headers

RUN python3 -m pip config set global.break-system-packages true && \
    pip install --upgrade --user liquidctl

# python:alpine images do not fully use the system-level alpine python package
#  and there are several patches involved with python for system library compatibility.
# Related issues:
#  https://github.com/python/cpython/pull/18380
#  https://github.com/docker-library/python/issues/111
FROM alpine

ENV PATH=/usr/local/bin:$PATH
ENV CC_PORT=11987
ENV CC_HOST_IP4=0.0.0.0
ENV CC_HOST_IP6=::
ENV CC_DBUS=OFF
ENV CC_DEVICE_EVENTS=OFF
ENV CC_SENSORS_DETECT=OFF
ENV CC_TLS=OFF
ENV CC_DATA_DIR=/etc/coolercontrol
ENV CC_PLUGINS_DIR=/etc/coolercontrol/plugins

RUN apk add --update python3 libusb openrc && \
    sed -i 's/#rc_sys=""/rc_sys="docker"/' /etc/rc.conf && \
    sed -i 's/#rc_depend_strict="YES"/rc_depend_strict="NO"/' /etc/rc.conf

COPY --from=daemon-builder /usr/src/coolercontrol/coolercontrold/target/release/coolercontrold /usr/local/bin/coolercontrold
COPY --from=liquidctl-builder /root/.local /root/.local
COPY .gitlab/images/dockerhub/entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

RUN coolercontrold --version

EXPOSE 11987
EXPOSE 11988

ENTRYPOINT ["/entrypoint.sh"]

