首页 > 解决方案 > 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 \
...

标签: sql-serverdockerlaravel-sail

解决方案


默认情况下,大多数 docker 镜像都有一个空的包列表以节省镜像大小。这就是为什么你需要apt-get update先。这不会更新任何软件(那将是apt-get upgrade),而只会更新软件包列表。该命令实际上也在您链接的 Microsoft 说明中。


推荐阅读