![](/img/trans.png)
[英]Laravel Sail/Docker - Unable to locate package msodbcsql17
[英]Docker Ubuntu 18.04 unable to install msodbcsql17 SQL Server ODBC Driver 17
我有下面的 ubuntu docker 文件,我想在其中添加 SQL 服务器 ZF89750C5A27 安装驱动程序。 当我构建 docker 文件时,我收到一个错误:“/bin/sh -c apt-get install msodbcsql17”返回一个非零代码:1
能否请你帮忙?
我在我的 Ubuntu VM 中按照文章中的步骤操作,它工作正常,我能够运行我的 python 程序。 但是,当我使用 docker 文件时出现错误
FROM ubuntu:18.04
RUN apt update -y && apt upgrade -y && apt-get update
RUN apt install -y curl python3.7 git python3-pip openjdk-8-jdk unixodbc-dev
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
RUN exit
#RUN ACCEPT_EULA=Y apt-get install msodbcsql17
RUN apt-get update
RUN ACCEPT_EULA=Y
RUN apt-get install msodbcsql17
#RUN ACCEPT_EULA=Y apt install msodbcsql17
RUN ACCEPT_EULA=Y apt install mssql-tools
RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
COPY startup.sh /
RUN chmod +x /startup.sh
ENTRYPOINT ["sh","/startup.sh"]
我可以让它工作。 以下是更新后的 Docker 文件片段
FROM ubuntu:18.04
RUN apt update -y && apt upgrade -y && apt-get update
RUN apt install -y curl python3.7 git python3-pip openjdk-8-jdk unixodbc-dev
# Add SQL Server ODBC Driver 17 for Ubuntu 18.04
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
RUN apt-get update
RUN ACCEPT_EULA=Y apt-get install -y --allow-unauthenticated msodbcsql17
RUN ACCEPT_EULA=Y apt-get install -y --allow-unauthenticated mssql-tools
RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
COPY startup.sh /
RUN chmod +x /startup.sh
ENTRYPOINT ["sh","/startup.sh"]
如果您使用的是 WSL2,则此错误可能是由于时钟问题不正确造成的。
打开 wsl2 并运行
sudo hwclock --hctosys
参考时钟: https ://www.thegeekstuff.com/2013/08/hwclock-examples/
wsl2 问题: https : //github.com/microsoft/WSL/issues/5324
当使用 WSL2 支持的 docker for windows 时,这可能会解决 apt-get 的问题
作为 Suraj 的补充
如果您将第一个语句替换为以下内容,他的答案适用于 Macbook M1:
FROM --platform=linux/amd64 ubuntu:18.04
我的工作过
RUN apt-get install -y unixodbc-dev && apt-get update && apt-get upgrade \
&& wget http://archive.ubuntu.com/ubuntu/pool/main/g/glibc/multiarch-support_2.27-3ubuntu1_amd64.deb \
&& apt-get install ./multiarch-support_2.27-3ubuntu1_amd64.deb \
&& apt-get update \
&& curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
&& curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list \
&& apt-get update \
&& ACCEPT_EULA=Y apt-get install -y --allow-unauthenticated msodbcsql17 \
&& apt-get update \
&& ACCEPT_EULA=Y apt-get install -y --allow-unauthenticated mssql-tools \
&& apt-get upgrade
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.