如何在openjdk docker镜像中安装sqlcmd以连接Azure SQL Server?
参考实现思路示意图:
问题解答
是否需要安装.NET Framework
- 完全不需要额外安装.NET Framework或任何.NET相关运行时
- 当前主流可用的sqlcmd工具均无.NET依赖:
- 传统官方mssql-tools包中的sqlcmd:仅依赖ODBC Driver for SQL Server即可运行
- 新一代跨平台go-sqlcmd:由Go语言编译为独立二进制,零额外系统依赖
- 当前主流可用的sqlcmd工具均无.NET依赖:
OpenJDK Docker镜像安装sqlcmd操作步骤
以下步骤适配Debian/Ubuntu系基础的OpenJDK镜像,如使用Alpine、RHEL系镜像可对应调整包管理命令。
方案1:安装官方传统mssql-tools版本
Dockerfile示例如下:
# 基于OpenJDK 17 slim版基础镜像,可替换为你需要的openjdk版本 FROM openjdk:17-slim RUN apt-get update && apt-get install -y curl gnupg2 lsb-release && \ # 导入微软官方GPG密钥、添加mssql软件源 curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - && \ echo "deb [arch=amd64] https://packages.microsoft.com/debian/$(lsb_release -rs)/prod $(lsb_release -cs) main" > /etc/apt/sources.list.d/mssql-release.list && \ # 接受许可协议并安装ODBC驱动和sqlcmd工具 apt-get update && \ ACCEPT_EULA=Y apt-get install -y msodbcsql18 mssql-tools18 && \ # 将sqlcmd所在路径加入系统环境变量 echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> /etc/profile && \ # 清理缓存缩小镜像体积 apt-get clean && rm -rf /var/lib/apt/lists/*
安装完成后可执行sqlcmd -?验证安装是否生效。
方案2:安装轻量版go-sqlcmd(推荐)
无需添加额外软件源,直接下载独立二进制即可使用,镜像体积更小:
FROM openjdk:17-slim RUN apt-get update && apt-get install -y curl tar && \ # 下载对应架构的go-sqlcmd二进制压缩包 curl -LO https://github.com/microsoft/go-sqlcmd/releases/latest/download/sqlcmd-linux-x64.tar.gz && \ tar -zxf sqlcmd-linux-x64.tar.gz && \ mv sqlcmd /usr/local/bin/ && \ # 清理冗余文件 rm sqlcmd-linux-x64.tar.gz && \ apt-get remove -y curl tar && apt-get autoremove -y && \ apt-get clean && rm -rf /var/lib/apt/lists/*
内容的提问来源于stack exchange,提问作者One Developer
相关产品推荐
相关产品推荐

