[英]How to add service to docker container?
是否可以将附加功能安装到特定的 docker 层? 实际上,我想为 asp.net 核心应用程序启动的脚本添加从终端处理 ssh 的能力。 在正常的非 docker 环境中,这工作正常。
我的Docker文件:
FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base
WORKDIR /app
FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build
WORKDIR /src
COPY ["LinuxConsoleApp/LinuxConsoleApp.csproj", "LinuxConsoleApp/"]
COPY . ./
WORKDIR "/src/LinuxConsoleApp"
RUN dotnet build "LinuxConsoleApp.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "LinuxConsoleApp.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
##instaling additional service, in my case ssh-client
RUN apt-get update && apt-get install -y openssh-client
##changing permissions
RUN mkdir -p /root/.ssh && \
chmod 0700 /root/.ssh
###unsafe coping private key to container - i know
COPY id_rsa /root/.ssh/id_rsa
WORKDIR /app/
###here ssh can connect from docker to localhost during build time
RUN ssh -o StrictHostKeyChecking=no troom@192.168.0.200
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "LinuxConsoleApp.dll"]
COPY LinuxConsoleApp/data /app/scripts
当我尝试从 asp.net 核心容器运行脚本时,我收到消息:
/app/scripts/Import.sh: 1: /app/scripts/Import.sh: ssh: not found
Import.sh 是我的脚本,其中包含:
ssh -o StrictHostKeyChecking=no troom@192.168.0.200
如您所见,它安装了 ssh 客户端,但我不明白为什么它不能从 asp.net 核心应用程序中获得
问题的解决方案并不明显,至少对我而言。
长话短说:UTF-8 BOM https://www.w3.org/International/questions/qa-byte-order-mark
短篇小说:我的 ssh 文件的格式包含不可见字符。 所以创建一个新文件就足够了,将内容复制到那里(在我的例子中是 ssh -o StrictHostKeyChecking=no troom@192.168.0.200),一切都开始正常工作。
综上所述,上面的dockerfile是正确的,可以放心使用。 问题是脚本文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.