# __  __                                 ____                       
# |  \/  | ___ _ __ ___   ___  _ __ _   _/ ___|  ___ ___  _ __   ___ 
# | |\/| |/ _ \ '_ ` _ \ / _ \| '__| | | \___ \ / __/ _ \| '_ \ / _ \
# | |  | |  __/ | | | | | (_) | |  | |_| |___) | (_| (_) | |_) |  __/
# |_|  |_|\___|_| |_| |_|\___/|_|   \__, |____/ \___\___/| .__/ \___|
#                                   |___/                |_|         

# Instruction

# To construct docker image: 
#    sudo docker build --network=host -t memoryscope .

# To run docker image: 
#    sudo docker run -it --rm --memory=4G --net=host memoryscope
# To run docker image with arguments (refer to memoryscope/core/config/arguments.py): 
#    sudo docker run -it --rm --memory=4G --net=host -e "OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -e "language=en" -e "human_name=superman" -e "generation_backend=openai_generation" -e "generation_model=gpt-4o" -e "embedding_backend=openai_embedding" -e "embedding_model=text-embedding-3-small" -e "enable_ranker=False" memoryscope
#docker run -it --rm ghcr.io/modelscope/memoryscope_arm /bin/bash
FROM python:3.11

# (Not necessary) Change pip source
RUN echo '[global]' > /etc/pip.conf && \
    echo 'index-url = https://mirrors.aliyun.com/pypi/simple/' >> /etc/pip.conf && \
    echo 'trusted-host = mirrors.aliyun.com' >> /etc/pip.conf

# Install Elastic Search
RUN useradd -m elastic_search_user
USER elastic_search_user
WORKDIR /home/elastic_search_user/elastic_search
RUN wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.15.2-linux-aarch64.tar.gz
RUN tar -xzf elasticsearch-8.15.2-linux-aarch64.tar.gz
RUN mv /home/elastic_search_user/elastic_search/elasticsearch-8.15.2 /home/elastic_search_user/elastic_search/elasticsearch-8.15.0
WORKDIR /home/elastic_search_user/elastic_search/elasticsearch-8.15.0
ENV DISCOVERY_TYPE=single-node \
    XPACK_SECURITY_ENABLED=false \
    XPACK_LICENSE_SELF_GENERATED_TYPE=trial

# Change user back to root and fix ownership
USER root
RUN chown -R elastic_search_user:elastic_search_user /home/elastic_search_user/
WORKDIR /memory_scope_project

# (Not necessary) Install the majority of deps, using docker build cache to accelerate future building
COPY requirements.txt ./
RUN pip3 install -r requirements.txt

# Enter working dir
WORKDIR /memory_scope_project
COPY . .
# RUN pip3 install poetry
# RUN poetry install
RUN pip3 install -r requirements.txt

# Launch!
# CMD ["bash"]
CMD ["bash", "examples/docker/entrypoint.sh"]

