大幅优化镜像体积

1. 使用 docker 预构建的必需文件,而不是安装全量依赖
2. 使用 zerofree 清除镜像无效数据
将 janus 日志级别调整为2
This commit is contained in:
mofeng-git 2025-03-10 10:56:16 +00:00
parent e375e41fb6
commit 48fe790897
4 changed files with 31 additions and 57 deletions

View File

@ -62,6 +62,7 @@ RUN sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/' /etc/apt/sources.lis
/run/kvmd \ /run/kvmd \
/tmp/kvmd-nginx \ /tmp/kvmd-nginx \
&& touch /run/kvmd/ustreamer.sock \ && touch /run/kvmd/ustreamer.sock \
&& apt clean \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
&& rm -rf /tmp/lib /tmp/wheel && rm -rf /tmp/lib /tmp/wheel

View File

@ -47,6 +47,7 @@ RUN sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/' /etc/apt/sources.lis
libspeex-dev \ libspeex-dev \
libspeexdsp-dev \ libspeexdsp-dev \
libusb-1.0-0-dev \ libusb-1.0-0-dev \
&& apt clean \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
COPY build/cargo_config /tmp/config COPY build/cargo_config /tmp/config
@ -69,7 +70,7 @@ RUN --security=insecure pip config set global.index-url https://pypi.tuna.tsingh
more-itertools multidict netifaces packaging passlib pillow ply psutil \ more-itertools multidict netifaces packaging passlib pillow ply psutil \
pycparser pyelftools pyghmi pygments pyparsing pyotp qrcode requests \ pycparser pyelftools pyghmi pygments pyparsing pyotp qrcode requests \
semantic-version setproctitle six spidev tabulate urllib3 wrapt xlib \ semantic-version setproctitle six spidev tabulate urllib3 wrapt xlib \
yarl pyserial pyyaml zstandard supervisor yarl pyserial pyyaml zstandard supervisor pyfatfs
# 编译安装 libnice、libsrtp、libwebsockets 和 janus-gateway # 编译安装 libnice、libsrtp、libwebsockets 和 janus-gateway
RUN git clone --depth=1 https://gitlab.freedesktop.org/libnice/libnice /tmp/libnice \ RUN git clone --depth=1 https://gitlab.freedesktop.org/libnice/libnice /tmp/libnice \

View File

@ -1,5 +1,5 @@
general: { general: {
debug_level = 0 debug_level = 2
} }
nat: { nat: {
nice_debug = false nice_debug = false

View File

@ -21,43 +21,38 @@
# # # #
# ========================================================================== # # ========================================================================== #
import textwrap
import setuptools.command.easy_install
from setuptools import setup, find_packages from setuptools import setup, find_packages
# =====
class _Template(str):
def __init__(self, text: str) -> None:
self.__text = textwrap.dedent(text).strip()
def __mod__(self, kv: dict) -> str:
kv = {"module_name": kv["ep"].module_name, **kv}
return (self.__text % (kv))
class _ScriptWriter(setuptools.command.easy_install.ScriptWriter):
template = _Template("""
# EASY-INSTALL-ENTRY-SCRIPT: %(spec)r,%(group)r,%(name)r
__requires__ = %(spec)r
from %(module_name)s import main
if __name__ == '__main__':
main()
""")
# =====
def main() -> None: def main() -> None:
setuptools.command.easy_install.ScriptWriter = _ScriptWriter # Define entry points manually with specific import paths
entry_points = {
"console_scripts": [
"kvmd = kvmd.apps.kvmd:main",
"kvmd-media = kvmd.apps.media:main",
"kvmd-pst = kvmd.apps.pst:main",
"kvmd-pstrun = kvmd.apps.pstrun:main",
"kvmd-otg = kvmd.apps.otg:main",
"kvmd-otgnet = kvmd.apps.otgnet:main",
"kvmd-otgmsd = kvmd.apps.otgmsd:main",
"kvmd-otgconf = kvmd.apps.otgconf:main",
"kvmd-htpasswd = kvmd.apps.htpasswd:main",
"kvmd-totp = kvmd.apps.totp:main",
"kvmd-edidconf = kvmd.apps.edidconf:main",
"kvmd-ipmi = kvmd.apps.ipmi:main",
"kvmd-vnc = kvmd.apps.vnc:main",
"kvmd-nginx-mkconf = kvmd.apps.ngxmkconf:main",
"kvmd-janus = kvmd.apps.janus:main",
"kvmd-watchdog = kvmd.apps.watchdog:main",
"kvmd-oled = kvmd.apps.oled:main",
"kvmd-helper-pst-remount = kvmd.helpers.remount:main",
"kvmd-helper-otgmsd-remount = kvmd.helpers.remount:main",
"kvmd-helper-swapfiles = kvmd.helpers.swapfiles:main",
]
}
setup( setup(
name="kvmd", name="kvmd",
version="4.49", version="4.20",
url="https://github.com/pikvm/kvmd", url="https://github.com/pikvm/kvmd",
license="GPLv3", license="GPLv3",
author="Maxim Devaev", author="Maxim Devaev",
@ -117,30 +112,7 @@ def main() -> None:
"kvmd": ["i18n/zh/LC_MESSAGES/*.mo"], "kvmd": ["i18n/zh/LC_MESSAGES/*.mo"],
}, },
entry_points={ entry_points=entry_points,
"console_scripts": [
"kvmd = kvmd.apps.kvmd:main",
"kvmd-media = kvmd.apps.media:main",
"kvmd-pst = kvmd.apps.pst:main",
"kvmd-pstrun = kvmd.apps.pstrun:main",
"kvmd-otg = kvmd.apps.otg:main",
"kvmd-otgnet = kvmd.apps.otgnet:main",
"kvmd-otgmsd = kvmd.apps.otgmsd:main",
"kvmd-otgconf = kvmd.apps.otgconf:main",
"kvmd-htpasswd = kvmd.apps.htpasswd:main",
"kvmd-totp = kvmd.apps.totp:main",
"kvmd-edidconf = kvmd.apps.edidconf:main",
"kvmd-ipmi = kvmd.apps.ipmi:main",
"kvmd-vnc = kvmd.apps.vnc:main",
"kvmd-nginx-mkconf = kvmd.apps.ngxmkconf:main",
"kvmd-janus = kvmd.apps.janus:main",
"kvmd-watchdog = kvmd.apps.watchdog:main",
"kvmd-oled = kvmd.apps.oled:main",
"kvmd-helper-pst-remount = kvmd.helpers.remount:main",
"kvmd-helper-otgmsd-remount = kvmd.helpers.remount:main",
"kvmd-helper-swapfiles = kvmd.helpers.swapfiles:main",
],
},
classifiers=[ classifiers=[
"License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)",