Alpine docker autofs 安装以实现动态 dotnet cifs 访问

Alpine docker autofs 安装以实现动态 dotnet cifs 访问

我正在尝试使用特定凭据访问网络共享。它将从我在 docker 中运行的 dotnet 应用程序中使用。我的研究结论是 autofs 是进行动态挂载的最佳方式,但我愿意接受任何其他解决方案来做同样的事情。我意识到 asp.net alpine 在这里可能是一个有点狭隘的基础图像选择,但出于安全原因,我强烈倾向于它。

我无法弄清楚为什么 autofs 无法安装/启动,它会悄悄失败/或者我不知道在哪里查找日志或任何输出。

这是我的docker文件:

FROM mcr.microsoft.com/dotnet/aspnet:6.0.15-alpine3.17 AS base

WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:6.0.407-alpine3.17 AS build
# --Here goes the dotnet build, removed for breivety--
FROM base AS final
WORKDIR /app
VOLUME [ "/sys/fs/cgroup" ]    # Needed for openrc?
RUN apk -q add openrc samba-client autofs cifs-utils #samba-client::smbclient is used for debugging
RUN chmod +x ./docker-entrypoint.sh
ENTRYPOINT ["sh", "./docker-entrypoint.sh"]

docker-entrypoint.sh:

echo -e "username=$DfsShare__Domain/$DfsShare__Username\npassword=$DfsShare__Password" > /etc/.dfs-credentials

mkdir $DfsShare__LocalDir
echo "$DfsShare__LocalDir -fstype=cifs,credentials=/etc/.dfs-credentials ://$DfsShare__Server/$DfsShare__Share" > /etc/auto.mydfs
echo "/-      /etc/auto.mydfs" >> /etc/autofs/auto.master
rc-service autofs restart
dotnet WebService.dll

挂载未完成,autofs 服务似乎失败。启动后,我得到以下输出:

* WARNING: autofs is already starting

我尝试了一些方法来获取更多信息:

验证所有变量$DfsShare__Domain等均正常 - docker-compose 填充它们,我可以将它们与 smbclient 一起使用

输出rc-status

Runlevel: sysinit
Dynamic Runlevel: hotplugged
Dynamic Runlevel: needed/wanted
Dynamic Runlevel: manual

使用以下命令从 docker 使用 smbclient 进行测试效果很好:

smbclient //$DfsShare__Server/$DfsShare__Share -m SMB2 -U $DfsShare__Domain/$DfsShare__Username%$DfsShare__Password -c "get TestFiles\\10MB.dat 10MB.dat"

一些页面引用/etc/sysconfig/autofs并设置了AUTOFS_OPTIONS="--debug"这个文件,但是即使在安装了 autofs 之后它似乎也没有出现在这个图像中(我应该创建它吗?!)

另外,我已经看到了相关参考,/var/log/messages但它也不存在,而且我不确定如何/是否可以激活它。

相关内容