-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' of github.com:1Panel-dev/MaxKB
- Loading branch information
Showing
7 changed files
with
74 additions
and
206 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 | ||
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=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" ] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,176 +1,14 @@ | ||
FROM postgres:15.3-bullseye | ||
|
||
ENV LANG=C.UTF-8 | ||
|
||
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 '<VERSION>'" | ||
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 | ||
FROM postgres:15.6-bookworm | ||
|
||
ARG DEPENDENCIES=" \ | ||
curl \ | ||
vim \ | ||
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/* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 | ||
python3 install_model.py | ||
|
||
FROM scratch | ||
COPY --from=vector-model model /opt/maxkb/app/model |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters