ZLMediaKit/dockerfile_py
xia-chu 35d698672f
Some checks failed
Android / build (push) Has been cancelled
CodeQL / Analyze (cpp) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Docker / build (push) Has been cancelled
DockerPy / build (push) Has been cancelled
Linux / build (push) Has been cancelled
Linux_Python / build (push) Has been cancelled
macOS / build (push) Has been cancelled
macOS_Python / build (push) Has been cancelled
Windows / build (push) Has been cancelled
Windows_Python / build (push) Has been cancelled
新增带pymkui后台管理的docker镜像
2026-04-18 19:11:41 +08:00

131 lines
4.2 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

FROM ubuntu:24.04 AS build
#shell,rtmp,rtsp,rtsps,http,https,rtp
EXPOSE 1935/tcp
EXPOSE 554/tcp
EXPOSE 80/tcp
EXPOSE 443/tcp
EXPOSE 10000/udp
EXPOSE 10000/tcp
EXPOSE 8000/udp
EXPOSE 8000/tcp
EXPOSE 9000/udp
# 设置环境变量,避免交互提示
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y \
git \
build-essential \
cmake \
curl \
unzip \
zip \
nasm \
autoconf \
automake \
libtool \
autoconf-archive \
pkg-config \
libavcodec-dev \
libavformat-dev \
libavutil-dev \
libswscale-dev \
libavfilter-dev \
python3 \
python3-dev \
python3-pip \
&& rm -rf /var/lib/apt/lists/*
RUN git clone https://github.com/ZLMediaKit/pymkui.git /opt/media/ZLMediaKit/pymkui
# 克隆 vcpkg 并编译
RUN git clone https://github.com/microsoft/vcpkg.git /opt/vcpkg \
&& /opt/vcpkg/bootstrap-vcpkg.sh
# 将 vcpkg 路径加入环境变量
ENV PATH="/opt/vcpkg:$PATH"
ENV VCPKG_ROOT=/opt/vcpkg
ENV CMAKE_TOOLCHAIN_FILE=/opt/vcpkg/scripts/buildsystems/vcpkg.cmake
# 自动选择 tripletx64-linux 或 arm64-linux
RUN ARCH=$(dpkg --print-architecture) && \
if [ "$ARCH" = "amd64" ]; then \
TRIPLET="x64-linux"; \
elif [ "$ARCH" = "arm64" ]; then \
TRIPLET="arm64-linux"; \
else \
echo "Unsupported architecture: $ARCH" && exit 1; \
fi && \
echo "Using vcpkg triplet: $TRIPLET" && \
/opt/vcpkg/vcpkg install jemalloc openssl libsrtp[openssl] --triplet $TRIPLET-dynamic
RUN mkdir -p /opt/media
COPY . /opt/media/ZLMediaKit
WORKDIR /opt/media/ZLMediaKit
RUN mkdir -p build release/linux/Release/lib
# 根据 dpkg 架构选择 vcpkg 动态库路径
RUN ARCH=$(dpkg --print-architecture) && \
if [ "$ARCH" = "amd64" ]; then VCPKG_LIB_PATH="/opt/vcpkg/installed/x64-linux-dynamic/lib"; \
elif [ "$ARCH" = "arm64" ]; then VCPKG_LIB_PATH="/opt/vcpkg/installed/arm64-linux-dynamic/lib"; \
else echo "Unsupported architecture: $ARCH" && exit 1; fi && \
echo "Copying libs from $VCPKG_LIB_PATH" && \
cp -rfP $VCPKG_LIB_PATH/* release/linux/Release/lib/
WORKDIR /opt/media/ZLMediaKit/build
RUN ARCH=$(dpkg --print-architecture) && \
if [ "$ARCH" = "amd64" ]; then TRIPLET="x64-linux"; \
elif [ "$ARCH" = "arm64" ]; then TRIPLET="arm64-linux"; \
else echo "Unsupported architecture: $ARCH" && exit 1; fi && \
echo "Using vcpkg triplet: $TRIPLET" && \
cmake -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} \
-DVCPKG_TARGET_TRIPLET=${TRIPLET}-dynamic \
-DCMAKE_BUILD_TYPE=Release \
-DENABLE_PYTHON=ON \
-DPython3_EXECUTABLE=$(which python3) \
-DENABLE_WEBRTC=ON -DENABLE_FFMPEG=ON \
-DENABLE_TESTS=OFF -DENABLE_API=OFF .. && \
make -j $(nproc)
FROM ubuntu:24.04
RUN apt-get update && \
DEBIAN_FRONTEND="noninteractive" \
apt-get install -y --no-install-recommends \
ca-certificates \
tzdata \
libavcodec-dev \
libavformat-dev \
libavutil-dev \
libswscale-dev \
libavfilter-dev \
ffmpeg \
python3 \
python3-dev \
python3-pip && \
apt-get autoremove -y && \
apt-get clean -y && \
rm -rf /var/lib/apt/lists/*
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \
&& echo $TZ > /etc/timezone && \
mkdir -p /opt/media/bin/www && mkdir -p /opt/media/bin/lib
WORKDIR /opt/media/bin/
COPY --from=build /opt/media/ZLMediaKit/release/linux/Release/MediaServer /opt/media/ZLMediaKit/default.pem /opt/media/bin/
COPY --from=build /opt/media/ZLMediaKit/release/linux/Release/lib /opt/media/bin/lib
COPY --from=build /opt/media/ZLMediaKit/release/linux/Release/config.ini /opt/media/conf/
RUN echo -e "\n[python]\nplugin=mk_plugin" >> /opt/media/conf/config.ini
COPY --from=build /opt/media/ZLMediaKit/www/ /opt/media/bin/www/
COPY --from=build /opt/media/ZLMediaKit/pymkui /opt/media/bin/pymkui
RUN pip3 install --no-cache-dir --break-system-packages -r /opt/media/bin/pymkui/backend/requirements.txt
ENV PATH="/opt/media/bin:$PATH"
ENV PYTHONPATH="/opt/media/bin/pymkui/backend"
ENV LD_LIBRARY_PATH="/opt/media/bin/lib"
CMD ["./MediaServer","-s", "default.pem", "-c", "../conf/config.ini", "-l","1"]