From f62ef250fdb87d89d266cf17bd633899994a40fc Mon Sep 17 00:00:00 2001 From: jiajingbin <39030567+jiajingbin@users.noreply.github.com> Date: Tue, 18 Mar 2025 17:35:12 +0800 Subject: [PATCH] feat: add dockerfile and modify install.sh (#30242) * feat: add Dockerfile and modify install.sh * enh: add a port * fix: modify addr to 0.0.0.0 from 127.0.0.1 in taosanode.ini --- tools/tdgpt/cfg/taosanode.ini | 4 ++-- tools/tdgpt/dockerfile/base_image/Dockerfile | 24 ++++++++++++++++++++ tools/tdgpt/dockerfile/base_image/README | 1 + tools/tdgpt/dockerfile/tdgpt/Dockerfile | 11 +++++++++ tools/tdgpt/dockerfile/tdgpt/README | 1 + tools/tdgpt/dockerfile/tdgpt/entrypoint.sh | 20 ++++++++++++++++ tools/tdgpt/script/install.sh | 16 +++++++++++-- 7 files changed, 73 insertions(+), 4 deletions(-) create mode 100644 tools/tdgpt/dockerfile/base_image/Dockerfile create mode 100644 tools/tdgpt/dockerfile/base_image/README create mode 100644 tools/tdgpt/dockerfile/tdgpt/Dockerfile create mode 100644 tools/tdgpt/dockerfile/tdgpt/README create mode 100755 tools/tdgpt/dockerfile/tdgpt/entrypoint.sh diff --git a/tools/tdgpt/cfg/taosanode.ini b/tools/tdgpt/cfg/taosanode.ini index 51782bccd6..12ba6b5776 100755 --- a/tools/tdgpt/cfg/taosanode.ini +++ b/tools/tdgpt/cfg/taosanode.ini @@ -7,7 +7,7 @@ env = LC_ALL = en_US.UTF-8 # ip:port -http = 127.0.0.1:6090 +http = 0.0.0.0:6090 # the local unix socket file than communicate to Nginx #socket = 127.0.0.1:8001 @@ -62,7 +62,7 @@ reload-mercy = 10 logto = /var/log/taos/taosanode/taosanode.log # wWSGI monitor port -stats = 127.0.0.1:8387 +stats = 0.0.0.0:8387 # python virtual environment directory virtualenv = /usr/local/taos/taosanode/venv/ diff --git a/tools/tdgpt/dockerfile/base_image/Dockerfile b/tools/tdgpt/dockerfile/base_image/Dockerfile new file mode 100644 index 0000000000..5c9f719f25 --- /dev/null +++ b/tools/tdgpt/dockerfile/base_image/Dockerfile @@ -0,0 +1,24 @@ +FROM python:3.10-slim AS builder + +ENV VIRTUAL_ENV=/var/lib/taos/taosanode/venv +ENV PATH="$VIRTUAL_ENV/bin:$PATH" + +RUN apt-get -o Acquire::Check-Valid-Until=false -o Acquire::Check-Date=false update -y && \ + apt-get install -y --no-install-recommends gcc libc-dev procps && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* && \ + python3.10 -m venv /var/lib/taos/taosanode/venv && \ + pip install --upgrade pip && \ + pip install --ignore-installed blinker && \ + pip install numpy==1.26.4 pandas==1.5.0 scikit-learn outlier_utils statsmodels pyculiarity pmdarima flask matplotlib uwsgi -i https://pypi.tuna.tsinghua.edu.cn/simple && \ + pip install torch --index-url https://download.pytorch.org/whl/cpu && \ + pip install --upgrade keras -i https://pypi.tuna.tsinghua.edu.cn/simple + +FROM python:3.10-slim +COPY --from=builder /var/lib/taos/taosanode/venv /var/lib/taos/taosanode/venv +RUN apt-get update -y && \ + apt-get install -y --no-install-recommends procps && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* +ENV VIRTUAL_ENV=/var/lib/taos/taosanode/venv +ENV PATH="$VIRTUAL_ENV/bin:$PATH" diff --git a/tools/tdgpt/dockerfile/base_image/README b/tools/tdgpt/dockerfile/base_image/README new file mode 100644 index 0000000000..3c4ecd3104 --- /dev/null +++ b/tools/tdgpt/dockerfile/base_image/README @@ -0,0 +1 @@ +docker build -t "tdgpt_env:1.0" . diff --git a/tools/tdgpt/dockerfile/tdgpt/Dockerfile b/tools/tdgpt/dockerfile/tdgpt/Dockerfile new file mode 100644 index 0000000000..8192c378ac --- /dev/null +++ b/tools/tdgpt/dockerfile/tdgpt/Dockerfile @@ -0,0 +1,11 @@ +FROM tdgpt_env:1.0 +WORKDIR /apps +ENV DEBIAN_FRONTEND=noninteractive +ARG pkgFile +ARG dirName +ADD ${pkgFile} /apps +RUN cd ${dirName}/ && /bin/bash install.sh -e no && cd .. && rm -rf ${dirName} +COPY entrypoint.sh /usr/local/bin/entrypoint.sh +RUN chmod +x /usr/local/bin/entrypoint.sh +EXPOSE 6090 8387 +ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] diff --git a/tools/tdgpt/dockerfile/tdgpt/README b/tools/tdgpt/dockerfile/tdgpt/README new file mode 100644 index 0000000000..9963313ae0 --- /dev/null +++ b/tools/tdgpt/dockerfile/tdgpt/README @@ -0,0 +1 @@ +docker build --build-arg pkgFile=TDengine-anode-3.3.6.0-Linux-x64.tar.gz --build-arg dirName=TDengine-anode-3.3.6.0 -t "tdgpt-ce:3.3.6.0" . diff --git a/tools/tdgpt/dockerfile/tdgpt/entrypoint.sh b/tools/tdgpt/dockerfile/tdgpt/entrypoint.sh new file mode 100755 index 0000000000..1f44ab4b77 --- /dev/null +++ b/tools/tdgpt/dockerfile/tdgpt/entrypoint.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +export PATH="/usr/local/taos/taosanode/venv/bin:$PATH" +export LANG=en_US.UTF-8 +export LC_CTYPE=en_US.UTF-8 +export LC_ALL=en_US.UTF-8 + +CONFIG_FILE="/usr/local/taos/taosanode/cfg/taosanode.ini" +if [ ! -f "$CONFIG_FILE" ]; then + echo "Error: Configuration file $CONFIG_FILE not found!" + exit 1 +fi + +echo "Starting uWSGI with config: $CONFIG_FILE" +exec /usr/local/taos/taosanode/venv/bin/uwsgi --ini "$CONFIG_FILE" + +if [ $? -ne 0 ]; then + echo "uWSGI failed to start. Exiting..." + exit 1 +fi diff --git a/tools/tdgpt/script/install.sh b/tools/tdgpt/script/install.sh index 9308b37cfc..9952b7f0af 100755 --- a/tools/tdgpt/script/install.sh +++ b/tools/tdgpt/script/install.sh @@ -482,6 +482,14 @@ function install_service_on_systemd() { ${csudo}systemctl daemon-reload } +function is_container() { + if [[ -f /.dockerenv ]] || grep -q "docker\|kubepods" /proc/1/cgroup || [[ -n "$KUBERNETES_SERVICE_HOST" || "$container" == "docker" ]]; then + return 0 # container env + else + return 1 # not container env + fi +} + function install_service() { if ((${service_mod} == 0)); then install_service_on_systemd $1 @@ -615,7 +623,9 @@ function updateProduct() { if [ -z $1 ]; then install_bin - install_services + if ! is_container; then + install_services + fi echo echo -e "${GREEN_DARK}To configure ${productName} ${NC}\t\t: edit ${global_conf_dir}/${configFile}" @@ -659,7 +669,9 @@ function installProduct() { install_module install_bin_and_lib - install_services + if ! is_container; then + install_services + fi echo echo -e "\033[44;32;1m${productName} is installed successfully!${NC}"