# Agenten Plattform
#
# (c) 2024 Magnus Bender
# 	Institute of Humanities-Centered Artificial Intelligence (CHAI)
# 	Universitaet Hamburg
# 	https://www.chai.uni-hamburg.de/~bender
#  
# source code released under the terms of GNU Public License Version 3
# https://www.gnu.org/licenses/gpl-3.0.txt

FROM ubuntu:24.04

ARG H_GID
ARG H_UID
ARG PIP_REQ_FILE

RUN apt update && \
	apt install -y bash \
		build-essential \
		git \
		curl \
		ca-certificates \
		python3-dev \
		python3-pip 

RUN DEBIAN_FRONTEND=noninteractive TZ=Europe/Berlin apt-get install -y tzdata \
	&& cp /usr/share/zoneinfo/Europe/Berlin /etc/localtime \
	&& echo "Europe/Berlin" > /etc/timezone 

RUN apt-get install -y vim htop \
		nginx supervisor \ 
	&& rm -rf /var/lib/apt/lists

# sytem and user setup 
RUN ln -s /usr/bin/python3 /usr/local/bin/python \
	&& addgroup --gid $H_GID user \
	&& adduser user --uid $H_UID --ingroup user --gecos "" --home /home/user/ --disabled-password

RUN mkdir -p /ums-agenten/plattform/ && mkdir -p /ums-agenten/persist/

COPY ./utils/mgmt/$PIP_REQ_FILE /ums-agenten/requirements.txt
RUN pip3 install --break-system-packages --no-cache-dir -r /ums-agenten/requirements.txt \
	&& pip3 freeze > /ums-agenten/requirements.txt

# nginx settings and startup
COPY ./utils/mgmt/supervisor.conf /etc/supervisor/supervisord.conf 
COPY ./utils/mgmt/nginx.conf /etc/nginx/nginx.conf
COPY ./utils/mgmt/app.conf /etc/nginx/sites-enabled/default

# install the code of the repo
COPY ./utils/setup.py /ums-agenten/plattform/
RUN pip3 install --break-system-packages -e /ums-agenten/plattform/

WORKDIR /ums-agenten/plattform/ums/

COPY --chown=user:user ./ums/ /ums-agenten/plattform/ums/
COPY --chown=user:user ./web/ /ums-agenten/plattform/web/

# run nginx and uvicorn
ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf"]