Reputation: 675
I have the below ubuntu docker file to which I want to add SQL Server ODBC Driver 17 for installation. When I build the docker file, I am getting an error: '/bin/sh -c apt-get install msodbcsql17' returned a non-zero code: 1
Could you please help?
I am referring to the article - https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver15
I followed the steps in the article in my Ubuntu VM and it works fine and I am able to run my python programs. However, when I use the docker file I get the error
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"]
Upvotes: 12
Views: 23707
Reputation: 119
Mine worked with
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
Upvotes: 0
Reputation: 2169
As addition to Suraj
His answer works on a Macbook M1 if you replace the first statement with:
FROM --platform=linux/amd64 ubuntu:18.04
Upvotes: 1
Reputation: 11
If you are on WSL2 this error might be due to a clock issue not being correct.
open wsl2 and run
sudo hwclock --hctosys
refclock: https://www.thegeekstuff.com/2013/08/hwclock-examples/
wsl2 issue: https://github.com/microsoft/WSL/issues/5324
this might fix the issue with apt-get when using WSL2 backed docker for windows
Upvotes: 1
Reputation: 675
I could get it working. Below is the updated Docker file snippet
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"]
Upvotes: 17