Skip to content

Instantly share code, notes, and snippets.

@chevectra87
Last active August 17, 2021 17:08
Show Gist options
  • Save chevectra87/b974d974b44d314ca1b7da11dbf3ac7c to your computer and use it in GitHub Desktop.
Save chevectra87/b974d974b44d314ca1b7da11dbf3ac7c to your computer and use it in GitHub Desktop.
Generate ODBC drivers for linux, to use pyodbc for MSSQL 17, in a container
####### Generate ODBC drivers for linux, to use pyodbc for MSSQL 17 #######
FROM python:3.7
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list
RUN apt-get update \
&& ACCEPT_EULA=Y apt-get install -y msodbcsql17 libgssapi-krb5-2 unixodbc-dev mssql-tools \
&& pip install pyodbc
## Generated files into container:
# /etc/odbc.ini
# /etc/odbcinst.ini
# /opt/microsoft/msodbcsql17/etc/odbcinst.ini
# /opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.8.so.1.1
# /usr/bin/odbcinst
# /usr/lib/x86_64-linux-gnu/libodbc.so.2.0.0
# /usr/lib/x86_64-linux-gnu/libodbccr.so.2.0.0
# /usr/lib/x86_64-linux-gnu/libodbcinst.so.2.0.0
# /usr/local/lib/python3.7/site-packages/pyodbc.cpython-37m-x86_64-linux-gnu.so
## Copy from container commands:
# mkdir -p ./opt/microsoft/msodbcsql17/lib64/ ./usr/local/lib/python3.7/site-packages ./usr/lib/x86_64-linux-gnu/ ./usr/bin/ ./etc
# docker container create --name temp msodbclibs
# docker container cp temp:/usr/local/lib/python3.7/site-packages/pyodbc.cpython-37m-x86_64-linux-gnu.so ./usr/local/lib/python3.7/site-packages/
# docker container cp temp:/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.8.so.1.1 ./opt/microsoft/msodbcsql17/lib64/
# docker container cp temp:/usr/lib/x86_64-linux-gnu/libodbc.so.2.0.0 ./usr/lib/x86_64-linux-gnu/
# docker container cp temp:/usr/lib/x86_64-linux-gnu/libodbccr.so.2.0.0 ./usr/lib/x86_64-linux-gnu/
# docker container cp temp:/usr/bin/odbcinst ./usr/bin/
# docker container cp temp:/etc/odbc.ini ./etc/
# docker container cp temp:/etc/odbcinst.ini ./etc/odbcinst.ini
# docker container rm temp
@chevectra87
Copy link
Author

Generate ODBC drivers for linux, to use pyodbc for MSSQL 17, in a container.
These modules can be embedded in a serverless package. It was the real motivation to create this Dockerfile.

TODO: Organize this for packing and delivery in production serverless service.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment