Docker构建含SQL Server与SSIS镜像时出现‘无法写入许可信息’错误排查
解决Docker构建SQL Server + SSIS镜像时的“无法写入许可信息”错误
问题分析
你遇到的错误核心原因是:ssis-conf setup需要向/home/mssql/.ssis目录写入许可信息,但你的Dockerfile中是先执行配置命令,再创建该目录并设置权限,导致执行配置时目标路径不存在或权限不足。此外,你覆盖.bashrc的操作也可能导致后续环境变量配置异常。
修正后的Dockerfile
FROM mcr.microsoft.com/mssql/server:2022-latest USER root RUN apt-get update && \ apt-get install -y software-properties-common curl && \ rm -rf /var/lib/apt/lists/* RUN curl https://packages.microsoft.com/keys/microsoft.asc | tee /etc/apt/trusted.gpg.d/microsoft.asc RUN add-apt-repository "$(curl https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2022.list)" RUN apt-get update RUN apt-get install -y mssql-server-is # 先创建SSIS配置所需目录并设置正确权限 RUN mkdir -p /home/mssql/.ssis/.system RUN chown -R mssql:mssql /home/mssql RUN chmod -R 755 /home/mssql # 执行SSIS配置,此时目录已存在且权限合规 RUN SSIS_PID=Developer ACCEPT_EULA=Y /opt/ssis/bin/ssis-conf -n setup # 追加PATH配置到.bashrc,避免覆盖原有内容 RUN cp /root/.bashrc /home/mssql/.bashrc RUN echo "\nexport PATH=/opt/ssis/bin:$PATH" >> /home/mssql/.bashrc USER mssql
关键改动说明
- 调整目录创建顺序:将
/home/mssql/.ssis/.system的创建和权限配置步骤提前到ssis-conf setup之前,确保配置工具能找到合法的写入路径。 - 设置目录所有者:用
chown -R mssql:mssql将目录所有权明确交给mssql用户,彻底解决权限写入问题。 - 修复.bashrc写入方式:将
>改为>>,避免覆盖原有的.bashrc内容,确保环境变量追加生效。
内容的提问来源于stack exchange,提问作者leanne
相关产品推荐
相关产品推荐

