sql-server - Laravel Sail/Docker - 无法找到包 msodbcsql17
问题描述
我正在尝试让 Laravel Sail Docker 与 sqlsrv (MSSQL) 兼容。我在配置方面已经走了很长一段路,并让它安装 sqlsrv 和 pdo_sqlsrv。所以现在我需要安装 msodbcsql17。为此,我正在遵循微软指南(https://docs.microsoft.com/nl-nl/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server? view=sql-server-ver15)适用于 Ubuntu 20.04(因为那是我的版本)。
该特定文档说要下载并运行。将其转换为 Sail Dockerfile,我的 Dockerfile 的那部分看起来像这样:
...
&& curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
&& curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.list \
&& apt-get install -y msodbcsql17 \
...
所以只需下载文件并将其放在推荐的位置。但无论我做什么,它总是返回一个代码 100: Unable to locate package msodbcsql17
。所以我最好的猜测是 apt-get install 默认不读取该位置。欢迎任何建议。
更新:所以感谢回答,这是解决方案:
...
&& curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
&& curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.list \
&& apt-get update \
&& ACCEPT_EULA=Y apt-get install -y msodbcsql17 \
&& ACCEPT_EULA=Y apt-get install -y mssql-tools \
...
解决方案
默认情况下,大多数 docker 镜像都有一个空的包列表以节省镜像大小。这就是为什么你需要apt-get update
先。这不会更新任何软件(那将是apt-get upgrade
),而只会更新软件包列表。该命令实际上也在您链接的 Microsoft 说明中。
推荐阅读
- javascript - 将 Vue 应用程序挂载到主 Vue 应用程序的容器中
- swagger - Swagger 2 相对路径引用没有得到解决
- android - CameraX - 找不到相机设备支持的表面组合 - Id:null。可能试图绑定太多用例
- umbraco - 即使已定义,也无法从对象中获取值
- azure - 使用图形 API 创建 Azure AD B2C 社交帐户
- r - S3 方法的正确实现:我什么时候应该使用省略号?
- java - 通过 Google Cloud Datastore 进行地理空间查询
- flask - 无法从我的本地机器访问部署在 OpenShift 上的 Flask 应用程序服务的端点
- excel - 如何确定用户是否关闭了已由 Excel 中的代码打开的 Access 应用程序
- sql - 创建表时计算默认值的 SQL 列