diff --git a/Dockerfile b/Dockerfile index d06b53202..d37555cd8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -33,7 +33,7 @@ RUN cd /tmp && /tmp/install_ta-lib.sh && rm -r /tmp/*ta-lib* ENV LD_LIBRARY_PATH /usr/local/lib # Install dependencies -COPY --chown=ftuser:ftuser requirements.txt requirements-hyperopt.txt requirements-freqai.txt /freqtrade/ +COPY --chown=ftuser:ftuser requirements.txt requirements-hyperopt.txt /freqtrade/ USER ftuser RUN pip install --user --no-cache-dir numpy \ && pip install --user --no-cache-dir -r requirements-hyperopt.txt diff --git a/docker/Dockerfile.freqai b/docker/Dockerfile.freqai index 9a2f75700..af9da4c25 100644 --- a/docker/Dockerfile.freqai +++ b/docker/Dockerfile.freqai @@ -1,9 +1,58 @@ -ARG sourceimage=freqtradeorg/freqtrade -ARG sourcetag=develop -FROM ${sourceimage}:${sourcetag} +FROM python:3.10.6-slim-bullseye as base + +# Setup env +ENV LANG C.UTF-8 +ENV LC_ALL C.UTF-8 +ENV PYTHONDONTWRITEBYTECODE 1 +ENV PYTHONFAULTHANDLER 1 +ENV PATH=/home/ftuser/.local/bin:$PATH +ENV FT_APP_ENV="docker" + +# Prepare environment +RUN mkdir /freqtrade \ + && apt-get update \ + && apt-get -y install sudo libatlas3-base curl sqlite3 libhdf5-serial-dev \ + && apt-get clean \ + && useradd -u 1000 -G sudo -U -m -s /bin/bash ftuser \ + && chown ftuser:ftuser /freqtrade \ + # Allow sudoers + && echo "ftuser ALL=(ALL) NOPASSWD: /bin/chown" >> /etc/sudoers + +WORKDIR /freqtrade # Install dependencies -COPY requirements-freqai.txt /freqtrade/ +FROM base as python-deps +RUN apt-get update \ + && apt-get -y install build-essential libssl-dev git libffi-dev libgfortran5 pkg-config cmake gcc \ + && apt-get clean \ + && pip install --upgrade pip -RUN pip install -r requirements-freqai.txt --user --no-cache-dir +# Install TA-lib +COPY build_helpers/* /tmp/ +RUN cd /tmp && /tmp/install_ta-lib.sh && rm -r /tmp/*ta-lib* +ENV LD_LIBRARY_PATH /usr/local/lib +# Install dependencies +COPY --chown=ftuser:ftuser requirements.txt requirements-hyperopt.txt requirements-freqai.txt /freqtrade/ +USER ftuser +RUN pip install --user --no-cache-dir numpy \ + && pip install --user --no-cache-dir -r requirements-freqai.txt + +# Copy dependencies to runtime-image +FROM base as runtime-image +COPY --from=python-deps /usr/local/lib /usr/local/lib +ENV LD_LIBRARY_PATH /usr/local/lib + +COPY --from=python-deps --chown=ftuser:ftuser /home/ftuser/.local /home/ftuser/.local + +USER ftuser +# Install and execute +COPY --chown=ftuser:ftuser . /freqtrade/ + +RUN pip install -e . --user --no-cache-dir --no-build-isolation \ + && mkdir /freqtrade/user_data/ \ + && freqtrade install-ui + +ENTRYPOINT ["freqtrade"] +# Default to trade mode +CMD [ "trade" ] diff --git a/requirements-freqai.txt b/requirements-freqai.txt index de1b6670a..aebce1fae 100644 --- a/requirements-freqai.txt +++ b/requirements-freqai.txt @@ -1,5 +1,5 @@ # Include all requirements to run the bot. --r requirements.txt +-r requirements-hyperopt.txt # Required for freqai scikit-learn==1.1.2 diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index e19eb27c1..020ccdda8 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -7,4 +7,3 @@ scikit-learn==1.1.2 scikit-optimize==0.9.0 filelock==3.8.0 progressbar2==4.0.0 --r requirements-freqai.txt \ No newline at end of file