我正在尝试TDLib使用.Net Core.
在这里,我找到了C#. 上述指南中的第一步是获取已编译的库。在电报的官方文档中,有一个用于编译上述库的脚本自动生成器的链接。基于这个脚本,我写了我的dockerfile,看起来是这样的(其实dockerfile是工作室自动生成的,我只是加了指令而已RUN)
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
RUN su - && \
apt-get update && \
apt-get upgrade -y && \
apt-get install -y make git zlib1g-dev libssl-dev gperf php cmake clang libc++-dev libc++abi-dev && \
exit && \
git clone https://github.com/tdlib/td.git && \
cd td && \
rm -rf build && \
mkdir build && \
cd build && \
export CXXFLAGS="-stdlib=libc++" && \
CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local .. && \
cmake --build . --target prepare_cross_compiling && \
cd .. && \
php SplitSource.php && \
cd build && \
cmake --build . --target install && \
cd .. && \
php SplitSource.php --undo && \
cd .. && \
ls -l /usr/local
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["TD_Lib_Builder/TD_Lib_Builder.csproj", "TD_Lib_Builder/"]
RUN dotnet restore "TD_Lib_Builder/TD_Lib_Builder.csproj"
COPY . .
WORKDIR "/src/TD_Lib_Builder"
RUN dotnet build "TD_Lib_Builder.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "TD_Lib_Builder.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "TD_Lib_Builder.dll"]
这个容器启动成功并且没有错误,但是在这里我没有在其中找到任何目录或编译文件。
帮助处理这个问题。
您在第二行(command
RUN)有问题,您不需要命令su -(您已经在root下),而exit只是中断脚本的执行,应该是这样的:之后,图书馆应该在
/usr/local/lib/:此外,您将构建的所有依赖项安装到将用于启动的映像中(这会增加其大小),如果您已经在使用多阶段构建,那么最好在单独的阶段构建库,然后将其复制到最终图像。