From 0bc186541b120a7a05ee2f4554a40baaf58021fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E5=B0=8F=E7=99=BD?= <296015668@qq.com> Date: Mon, 25 Mar 2024 11:15:52 +0800 Subject: [PATCH 1/4] =?UTF-8?q?perf:=20=E7=B2=BE=E7=AE=80=E6=9E=84?= =?UTF-8?q?=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- installer/Dockerfile-dev | 80 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 installer/Dockerfile-dev diff --git a/installer/Dockerfile-dev b/installer/Dockerfile-dev new file mode 100644 index 000000000..3e696d9f7 --- /dev/null +++ b/installer/Dockerfile-dev @@ -0,0 +1,80 @@ +FROM debian:bookworm-slim as stage-base +ARG DEPENDENCIES=" \ + python3-pip \ + python3.11-mini \ + python3.11-venv" + +RUN apt-get update && \ + apt-get install -y --no-install-recommends $DEPENDENCIES && \ + apt-get clean all && \ + rm -rf /var/lib/apt/lists/* + +COPY . /opt/maxkb/app +RUN mkdir -p /opt/maxkb/app /opt/maxkb/model /opt/maxkb/conf && \ + cp -f /opt/maxkb/app/installer/config.yaml /opt/maxkb/conf && \ + rm -rf /opt/maxkb/app/ui + +FROM python:3.11-slim-bookworm as vector-model +COPY installer/install_model.py install_model.py +RUN --mount=type=cache,target=/root/.cache \ + pip3 install --upgrade pip setuptools && \ + pip install pycrawlers && \ + pip install transformers && \ + python3 install_model.py + +FROM node:18-bookworm-slim as web-build +COPY ui ui +RUN cd ui && \ + npm install && \ + npm run build && \ + rm -rf ./node_modules + +FROM stage-base as stage-build +WORKDIR /opt/maxkb/app +RUN python3 -m venv /opt/py3 && \ + pip install poetry --break-system-packages && \ + poetry config virtualenvs.create false && \ + . /opt/py3/bin/activate && \ + if [ "$(uname -m)" != "x86_64" ]; then sed -i '/^torch/d' pyproject.toml; fi && \ + poetry install + +FROM postgres:15.6-bookworm +ARG DOCKER_IMAGE_TAG=dev \ + BUILD_AT \ + GITHUB_COMMIT + +ENV MAXKB_VERSION ${DOCKER_IMAGE_TAG} (build at ${BUILD_AT}, commit: ${GITHUB_COMMIT}) + +ARG DEPENDENCIES=" \ + curl \ + python3.11-mini \ + python3.11-venv \ + postgresql-15-pgvector" + +RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \ + echo "Asia/Shanghai" > /etc/timezone && \ + apt-get update && apt-get install -y --no-install-recommends $DEPENDENCIES && \ + apt-get clean all && \ + rm -rf /var/lib/apt/lists/* + +COPY --from=stage-build /opt/py3 /opt/py3 +COPY --from=stage-build /opt/maxkb /opt/maxkb +COPY --from=vector-model model /opt/maxkb/app/model +COPY --from=web-build ui /opt/maxkb/app/ui + +ENV LANG=en_US.UTF-8 \ + PATH=/opt/py3/bin:$PATH + +ENV POSTGRES_USER root +ENV POSTGRES_PASSWORD Password123@postgres + +RUN mv /opt/maxkb/app/model/* /opt/maxkb/model && \ + chmod 755 /opt/maxkb/app/installer/run-maxkb.sh && \ + cp -r /opt/maxkb/model/base/hub /opt/maxkb/model/tokenizer && \ + cp -f /opt/maxkb/app/installer/init.sql /docker-entrypoint-initdb.d && \ + cp -f /opt/maxkb/app/installer/run-maxkb.sh /usr/bin/run-maxkb.sh + +EXPOSE 8080 + +ENTRYPOINT ["bash", "-c"] +CMD [ "/usr/bin/run-maxkb.sh" ] \ No newline at end of file From de8d21225ec60174d2cd7cc1133b04baa680a4fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E5=B0=8F=E7=99=BD?= <296015668@qq.com> Date: Mon, 25 Mar 2024 12:28:55 +0800 Subject: [PATCH 2/4] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E9=95=9C?= =?UTF-8?q?=E5=83=8F=E5=A4=A7=E5=B0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflows/build-and-push-python-pg.yml | 2 +- .../workflows/build-and-push-vector-model.yml | 2 +- README.md | 3 + installer/Dockerfile | 68 ++++--- installer/Dockerfile-dev | 80 -------- installer/Dockerfile-python-pg | 185 ++---------------- installer/Dockerfile-vector-model | 8 +- 7 files changed, 65 insertions(+), 283 deletions(-) delete mode 100644 installer/Dockerfile-dev diff --git a/.github/workflows/build-and-push-python-pg.yml b/.github/workflows/build-and-push-python-pg.yml index d82ca86bd..1eb12cf41 100644 --- a/.github/workflows/build-and-push-python-pg.yml +++ b/.github/workflows/build-and-push-python-pg.yml @@ -39,7 +39,7 @@ jobs: run: | DOCKER_IMAGE=ghcr.io/1panel-dev/maxkb-python-pg DOCKER_PLATFORMS=${{ github.event.inputs.architecture }} - TAG_NAME=python3.11.8-pg15.3 + TAG_NAME=python3.11-pg15.6 DOCKER_IMAGE_TAGS="--tag ${DOCKER_IMAGE}:${TAG_NAME} --tag ${DOCKER_IMAGE}:latest" echo ::set-output name=docker_image::${DOCKER_IMAGE} echo ::set-output name=version::${TAG_NAME} diff --git a/.github/workflows/build-and-push-vector-model.yml b/.github/workflows/build-and-push-vector-model.yml index 1e8556461..a054bc7b3 100644 --- a/.github/workflows/build-and-push-vector-model.yml +++ b/.github/workflows/build-and-push-vector-model.yml @@ -5,7 +5,7 @@ on: inputs: dockerImageTag: description: 'Docker Image Tag' - default: 'v1.0.0' + default: 'v1.0.1' required: true architecture: description: 'Architecture' diff --git a/README.md b/README.md index e7a8a1309..558741e3c 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,9 @@ MaxKB 是一款基于 LLM 大语言模型的知识库问答系统。 ``` docker run -d --name=maxkb -p 8080:8080 -v ~/.maxkb:/var/lib/postgresql/data 1panel/maxkb + +# 用户名: admin +# 密码: MaxKB@123.. ``` 也可以通过 [1Panel 应用商店](https://apps.fit2cloud.com/1panel) 快速部署 MaxKB + Ollama + Llama 2,30 分钟内即可上线基于本地大模型的知识库问答系统,并嵌入到第三方业务系统中。 diff --git a/installer/Dockerfile b/installer/Dockerfile index 86a23b84e..b2499b1b8 100644 --- a/installer/Dockerfile +++ b/installer/Dockerfile @@ -1,41 +1,59 @@ -FROM ghcr.io/1panel-dev/maxkb-vector-model:v1.0.0 as vector-model +FROM ghcr.io/1panel-dev/maxkb-vector-model:v1.0.1 as vector-model +FROM ghcr.io/1panel-dev/maxkb-python-pg:python3.11-pg15.6 as stage-build -FROM node:18-alpine3.18 as web-build +ARG DEPENDENCIES=" \ + python3-pip" + +RUN apt-get update && \ + apt-get install -y --no-install-recommends $DEPENDENCIES && \ + apt-get clean all && \ + rm -rf /var/lib/apt/lists/* + +COPY . /opt/maxkb/app +RUN mkdir -p /opt/maxkb/app /opt/maxkb/model /opt/maxkb/conf && \ + cp -f /opt/maxkb/app/installer/config.yaml /opt/maxkb/conf && \ + rm -rf /opt/maxkb/app/ui + +WORKDIR /opt/maxkb/app +RUN python3 -m venv /opt/py3 && \ + pip install poetry --break-system-packages && \ + poetry config virtualenvs.create false && \ + . /opt/py3/bin/activate && \ + if [ "$(uname -m)" != "x86_64" ]; then sed -i '/^torch/d' pyproject.toml; fi && \ + poetry install + +FROM node:18-bookworm-slim as web-build COPY ui ui RUN cd ui && \ npm install && \ npm run build && \ rm -rf ./node_modules -FROM ghcr.io/1panel-dev/maxkb-python-pg:python3.11.8-pg15.3 -ARG DOCKER_IMAGE_TAG=dev -ARG BUILD_AT -ARG GITHUB_COMMIT +FROM ghcr.io/1panel-dev/maxkb-python-pg:python3.11-pg15.6 +ARG DOCKER_IMAGE_TAG=dev \ + BUILD_AT \ + GITHUB_COMMIT + ENV MAXKB_VERSION ${DOCKER_IMAGE_TAG} (build at ${BUILD_AT}, commit: ${GITHUB_COMMIT}) -# 创建工作目录 -RUN mkdir -p /opt/maxkb/app && mkdir -p /opt/maxkb/model && mkdir -p /opt/maxkb/conf -# 拷贝项目 -COPY . /opt/maxkb/app -RUN rm -rf /opt/maxkb/app/ui -COPY installer/config.yaml /opt/maxkb/conf -COPY --from=vector-model model /opt/maxkb/app/model + +COPY --from=stage-build /opt/py3 /opt/py3 COPY --from=web-build ui /opt/maxkb/app/ui +COPY --from=stage-build /opt/maxkb /opt/maxkb +COPY --from=vector-model /opt/maxkb/app/model /opt/maxkb/app/model + +ENV LANG=en_US.UTF-8 \ + PATH=/opt/py3/bin:$PATH + ENV POSTGRES_USER root ENV POSTGRES_PASSWORD Password123@postgres -WORKDIR /opt/maxkb/app + RUN mv /opt/maxkb/app/model/* /opt/maxkb/model && \ + chmod 755 /opt/maxkb/app/installer/run-maxkb.sh && \ cp -r /opt/maxkb/model/base/hub /opt/maxkb/model/tokenizer && \ - apt-get update && apt-get install -y curl && \ - pip3 install --upgrade pip && \ - if [ "$(uname -m)" = "aarch64" ]; then sed -i '/^torch/d' pyproject.toml; fi && \ - pip3 install poetry && \ - poetry export -f requirements.txt --output requirements.txt --without-hashes && \ - pip3 install --no-cache-dir -r requirements.txt && \ - pip3 cache purge && \ - rm -rf /var/lib/apt/lists/* -# 启动命令 + cp -f /opt/maxkb/app/installer/run-maxkb.sh /usr/bin/run-maxkb.sh && \ + cp -f /opt/maxkb/app/installer/init.sql /docker-entrypoint-initdb.d + EXPOSE 8080 -COPY installer/run-maxkb.sh /usr/bin/ -RUN chmod 755 /usr/bin/run-maxkb.sh + ENTRYPOINT ["bash", "-c"] CMD [ "/usr/bin/run-maxkb.sh" ] \ No newline at end of file diff --git a/installer/Dockerfile-dev b/installer/Dockerfile-dev deleted file mode 100644 index 3e696d9f7..000000000 --- a/installer/Dockerfile-dev +++ /dev/null @@ -1,80 +0,0 @@ -FROM debian:bookworm-slim as stage-base -ARG DEPENDENCIES=" \ - python3-pip \ - python3.11-mini \ - python3.11-venv" - -RUN apt-get update && \ - apt-get install -y --no-install-recommends $DEPENDENCIES && \ - apt-get clean all && \ - rm -rf /var/lib/apt/lists/* - -COPY . /opt/maxkb/app -RUN mkdir -p /opt/maxkb/app /opt/maxkb/model /opt/maxkb/conf && \ - cp -f /opt/maxkb/app/installer/config.yaml /opt/maxkb/conf && \ - rm -rf /opt/maxkb/app/ui - -FROM python:3.11-slim-bookworm as vector-model -COPY installer/install_model.py install_model.py -RUN --mount=type=cache,target=/root/.cache \ - pip3 install --upgrade pip setuptools && \ - pip install pycrawlers && \ - pip install transformers && \ - python3 install_model.py - -FROM node:18-bookworm-slim as web-build -COPY ui ui -RUN cd ui && \ - npm install && \ - npm run build && \ - rm -rf ./node_modules - -FROM stage-base as stage-build -WORKDIR /opt/maxkb/app -RUN python3 -m venv /opt/py3 && \ - pip install poetry --break-system-packages && \ - poetry config virtualenvs.create false && \ - . /opt/py3/bin/activate && \ - if [ "$(uname -m)" != "x86_64" ]; then sed -i '/^torch/d' pyproject.toml; fi && \ - poetry install - -FROM postgres:15.6-bookworm -ARG DOCKER_IMAGE_TAG=dev \ - BUILD_AT \ - GITHUB_COMMIT - -ENV MAXKB_VERSION ${DOCKER_IMAGE_TAG} (build at ${BUILD_AT}, commit: ${GITHUB_COMMIT}) - -ARG DEPENDENCIES=" \ - curl \ - python3.11-mini \ - python3.11-venv \ - postgresql-15-pgvector" - -RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \ - echo "Asia/Shanghai" > /etc/timezone && \ - apt-get update && apt-get install -y --no-install-recommends $DEPENDENCIES && \ - apt-get clean all && \ - rm -rf /var/lib/apt/lists/* - -COPY --from=stage-build /opt/py3 /opt/py3 -COPY --from=stage-build /opt/maxkb /opt/maxkb -COPY --from=vector-model model /opt/maxkb/app/model -COPY --from=web-build ui /opt/maxkb/app/ui - -ENV LANG=en_US.UTF-8 \ - PATH=/opt/py3/bin:$PATH - -ENV POSTGRES_USER root -ENV POSTGRES_PASSWORD Password123@postgres - -RUN mv /opt/maxkb/app/model/* /opt/maxkb/model && \ - chmod 755 /opt/maxkb/app/installer/run-maxkb.sh && \ - cp -r /opt/maxkb/model/base/hub /opt/maxkb/model/tokenizer && \ - cp -f /opt/maxkb/app/installer/init.sql /docker-entrypoint-initdb.d && \ - cp -f /opt/maxkb/app/installer/run-maxkb.sh /usr/bin/run-maxkb.sh - -EXPOSE 8080 - -ENTRYPOINT ["bash", "-c"] -CMD [ "/usr/bin/run-maxkb.sh" ] \ No newline at end of file diff --git a/installer/Dockerfile-python-pg b/installer/Dockerfile-python-pg index 84f091cf2..71ae8b9d7 100644 --- a/installer/Dockerfile-python-pg +++ b/installer/Dockerfile-python-pg @@ -1,176 +1,13 @@ -FROM postgres:15.3-bullseye +FROM postgres:15.6-bookworm -ENV LANG=C.UTF-8 +ARG DEPENDENCIES=" \ + curl \ + python3.11-mini \ + python3.11-venv \ + postgresql-15-pgvector" -RUN apt-get update - -RUN apt-get install -y postgresql-15-pgvector - -COPY installer/init.sql /docker-entrypoint-initdb.d - -RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone - -# ---- install python --- # -# ---- below content is copied from https://github.com/docker-library/python/blob/master/3.11/slim-bullseye/Dockerfile --- # - -# ensure local python is preferred over distribution python -ENV PATH /usr/local/bin:$PATH - -# http://bugs.python.org/issue19846 -# > At the moment, setting "LANG=C" on a Linux system *fundamentally breaks Python 3*, and that's not OK. -ENV LANG C.UTF-8 - -# runtime dependencies -RUN set -eux; \ - apt-get update; \ - apt-get install -y --no-install-recommends \ - ca-certificates \ - netbase \ - tzdata \ - ; \ - rm -rf /var/lib/apt/lists/* - -ENV GPG_KEY A035C8C19219BA821ECEA86B64E628F8D684696D -ENV PYTHON_VERSION 3.11.8 - -RUN set -eux; \ - \ - savedAptMark="$(apt-mark showmanual)"; \ - apt-get update; \ - apt-get install -y --no-install-recommends \ - dpkg-dev \ - gcc \ - gnupg \ - libbluetooth-dev \ - libbz2-dev \ - libc6-dev \ - libdb-dev \ - libexpat1-dev \ - libffi-dev \ - libgdbm-dev \ - liblzma-dev \ - libncursesw5-dev \ - libreadline-dev \ - libsqlite3-dev \ - libssl-dev \ - make \ - tk-dev \ - uuid-dev \ - wget \ - xz-utils \ - zlib1g-dev \ - ; \ - \ - wget -O python.tar.xz "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz"; \ - wget -O python.tar.xz.asc "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc"; \ - GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \ - gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$GPG_KEY"; \ - gpg --batch --verify python.tar.xz.asc python.tar.xz; \ - gpgconf --kill all; \ - rm -rf "$GNUPGHOME" python.tar.xz.asc; \ - mkdir -p /usr/src/python; \ - tar --extract --directory /usr/src/python --strip-components=1 --file python.tar.xz; \ - rm python.tar.xz; \ - \ - cd /usr/src/python; \ - gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \ - ./configure \ - --build="$gnuArch" \ - --enable-loadable-sqlite-extensions \ - --enable-optimizations \ - --enable-option-checking=fatal \ - --enable-shared \ - --with-lto \ - --with-system-expat \ - --without-ensurepip \ - ; \ - nproc="$(nproc)"; \ - EXTRA_CFLAGS="$(dpkg-buildflags --get CFLAGS)"; \ - LDFLAGS="$(dpkg-buildflags --get LDFLAGS)"; \ - LDFLAGS="${LDFLAGS:--Wl},--strip-all"; \ - make -j "$nproc" \ - "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" \ - "LDFLAGS=${LDFLAGS:-}" \ - "PROFILE_TASK=${PROFILE_TASK:-}" \ - ; \ -# https://github.com/docker-library/python/issues/784 -# prevent accidental usage of a system installed libpython of the same version - rm python; \ - make -j "$nproc" \ - "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" \ - "LDFLAGS=${LDFLAGS:--Wl},-rpath='\$\$ORIGIN/../lib'" \ - "PROFILE_TASK=${PROFILE_TASK:-}" \ - python \ - ; \ - make install; \ - \ - cd /; \ - rm -rf /usr/src/python; \ - \ - find /usr/local -depth \ - \( \ - \( -type d -a \( -name test -o -name tests -o -name idle_test \) \) \ - -o \( -type f -a \( -name '*.pyc' -o -name '*.pyo' -o -name 'libpython*.a' \) \) \ - \) -exec rm -rf '{}' + \ - ; \ - \ - ldconfig; \ - \ - apt-mark auto '.*' > /dev/null; \ - apt-mark manual $savedAptMark; \ - find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \ - | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); printf "*%s\n", so }' \ - | sort -u \ - | xargs -r dpkg-query --search \ - | cut -d: -f1 \ - | sort -u \ - | xargs -r apt-mark manual \ - ; \ - apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ - rm -rf /var/lib/apt/lists/*; \ - \ - python3 --version - -# make some useful symlinks that are expected to exist ("/usr/local/bin/python" and friends) -RUN set -eux; \ - for src in idle3 pydoc3 python3 python3-config; do \ - dst="$(echo "$src" | tr -d 3)"; \ - [ -s "/usr/local/bin/$src" ]; \ - [ ! -e "/usr/local/bin/$dst" ]; \ - ln -svT "$src" "/usr/local/bin/$dst"; \ - done - -# if this is called "PIP_VERSION", pip explodes with "ValueError: invalid truth value ''" -ENV PYTHON_PIP_VERSION 24.0 -# https://github.com/docker-library/python/issues/365 -ENV PYTHON_SETUPTOOLS_VERSION 65.5.1 -# https://github.com/pypa/get-pip -ENV PYTHON_GET_PIP_URL https://github.com/pypa/get-pip/raw/dbf0c85f76fb6e1ab42aa672ffca6f0a675d9ee4/public/get-pip.py -ENV PYTHON_GET_PIP_SHA256 dfe9fd5c28dc98b5ac17979a953ea550cec37ae1b47a5116007395bfacff2ab9 - -RUN set -eux; \ - \ - savedAptMark="$(apt-mark showmanual)"; \ - apt-get update; \ - apt-get install -y --no-install-recommends wget vim; \ - \ - wget -O get-pip.py "$PYTHON_GET_PIP_URL"; \ - echo "$PYTHON_GET_PIP_SHA256 *get-pip.py" | sha256sum -c -; \ - \ - apt-mark auto '.*' > /dev/null; \ - [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null; \ - apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ - rm -rf /var/lib/apt/lists/*; \ - \ - export PYTHONDONTWRITEBYTECODE=1; \ - \ - python get-pip.py \ - --disable-pip-version-check \ - --no-cache-dir \ - --no-compile \ - "pip==$PYTHON_PIP_VERSION" \ - "setuptools==$PYTHON_SETUPTOOLS_VERSION" \ - ; \ - rm -f get-pip.py; \ - \ - pip --version +RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \ + echo "Asia/Shanghai" > /etc/timezone && \ + apt-get update && apt-get install -y --no-install-recommends $DEPENDENCIES && \ + apt-get clean all && \ + rm -rf /var/lib/apt/lists/* \ No newline at end of file diff --git a/installer/Dockerfile-vector-model b/installer/Dockerfile-vector-model index 97e35b4e4..b44cadc45 100644 --- a/installer/Dockerfile-vector-model +++ b/installer/Dockerfile-vector-model @@ -1,6 +1,10 @@ -FROM python:3.11-slim +FROM python:3.11-slim-bookworm as vector-model + COPY installer/install_model.py install_model.py RUN pip3 install --upgrade pip setuptools && \ pip install pycrawlers && \ pip install transformers && \ - python3 install_model.py \ No newline at end of file + python3 install_model.py + +FROM scratch +COPY --from=vector-model model /opt/maxkb/app/model \ No newline at end of file From 76dbddebe56e6308190c336f278ae4990d881507 Mon Sep 17 00:00:00 2001 From: liqiang-fit2cloud Date: Mon, 25 Mar 2024 15:07:14 +0800 Subject: [PATCH 3/4] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E9=95=9C?= =?UTF-8?q?=E5=83=8F=E5=A4=A7=E5=B0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- installer/Dockerfile | 4 ++-- installer/Dockerfile-python-pg | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/installer/Dockerfile b/installer/Dockerfile index b2499b1b8..953a345b7 100644 --- a/installer/Dockerfile +++ b/installer/Dockerfile @@ -35,10 +35,10 @@ ARG DOCKER_IMAGE_TAG=dev \ GITHUB_COMMIT ENV MAXKB_VERSION ${DOCKER_IMAGE_TAG} (build at ${BUILD_AT}, commit: ${GITHUB_COMMIT}) - +WORKDIR /opt/maxkb/app +COPY --from=stage-build /opt/maxkb /opt/maxkb COPY --from=stage-build /opt/py3 /opt/py3 COPY --from=web-build ui /opt/maxkb/app/ui -COPY --from=stage-build /opt/maxkb /opt/maxkb COPY --from=vector-model /opt/maxkb/app/model /opt/maxkb/app/model ENV LANG=en_US.UTF-8 \ diff --git a/installer/Dockerfile-python-pg b/installer/Dockerfile-python-pg index 71ae8b9d7..eb2501468 100644 --- a/installer/Dockerfile-python-pg +++ b/installer/Dockerfile-python-pg @@ -2,6 +2,7 @@ FROM postgres:15.6-bookworm ARG DEPENDENCIES=" \ curl \ + vim \ python3.11-mini \ python3.11-venv \ postgresql-15-pgvector" From b363327ebec2f24b84ced878f91a340fa02d94e9 Mon Sep 17 00:00:00 2001 From: wangdan-fit2cloud Date: Mon, 25 Mar 2024 15:07:06 +0800 Subject: [PATCH 4/4] =?UTF-8?q?fix:=20=E7=AE=A1=E7=90=86=E5=91=98=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E7=94=A8=E6=88=B7=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/src/views/user-manage/component/UserDialog.vue | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ui/src/views/user-manage/component/UserDialog.vue b/ui/src/views/user-manage/component/UserDialog.vue index 53eec6afe..997d9bd4c 100644 --- a/ui/src/views/user-manage/component/UserDialog.vue +++ b/ui/src/views/user-manage/component/UserDialog.vue @@ -118,7 +118,12 @@ watch(dialogVisible, (bool) => { const open = (data: any) => { if (data) { - userForm.value = cloneDeep(data) + userForm.value['id'] = data.id + userForm.value.username = data.username + userForm.value.email = data.email + userForm.value.password = data.password + userForm.value.phone = data.phone + userForm.value.nick_name = data.nick_name isEdit.value = true } dialogVisible.value = true