es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo instalar el controlador “Microsoft Access Driver (*.mdb, *.accdb)” en un contenedor de Docker de Alpine Linux.

Script para encontrar todos los drivers

He creado un script para encontrar todos los drivers ‘pyodbc’:

import pyodbc

print([x for x in pyodbc.drivers()])

<h1>El problema</h1>

<p>En mi equipo (Windows con drivers instalados), cuando lo ejecuto obtengo todos los drivers x64:</p>

<p><code>sh

['SQL Server', 'ODBC Driver 17 for SQL Server', 'Microsoft Access Driver (.mdb, *.accdb)', 'Microsoft Excel Driver (.xls, .xlsx, *.xlsm, *.xlsb)', 'Microsoft Access dBASE Driver (.dbf, .ndx, *.mdx)', 'Microsoft Access Text Driver (.txt, *.csv)']
</code>
Pero, cuando uso Docker</p>

<p>“`Dockerfile
FROM python:3.8-alpine

Agregar dependencias

RUN apk upgrade
RUN apk add –no-cache curl gcc g++ unixodbc-dev
RUN ln -s /usr/include/locale.h /usr/include/xlocale.h

WORKDIR /app

Instalar dependencias de Python

COPY requirements.txt ./
RUN pip install –upgrade pip
RUN pip install -r requirements.txt

Ejecutar script

COPY finddrivers.py finddrivers.py
CMD [ “python3”, “find_drivers.py” ]
“`

Los drivers no se encuentran:
sh

[]

Referencias

  • https://stackoverflow.com/questions/51888064/install-odbc-driver-in-alpine-linux-docker-container

¿Cuál es la mejor manera de instalar el driver “Microsoft Access Driver (*.mdb, *.accdb)” en esta imagen de Docker?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Según la referencia mencionada, el controlador de Microsoft Access no está disponible en el repositorio de Alpine Linux.

    Una posible solución podría ser utilizar una imagen base diferente que incluya el controlador o instalarlo manualmente en el sistema de archivos del contenedor.

    Aquí hay algunos pasos posibles para instalar el controlador manualmente en el contenedor:

    1. Descargue el paquete del controlador desde el sitio web de Microsoft: https://www.microsoft.com/en-us/download/details.aspx?id=54920
    2. Copie el paquete del controlador al contenedor mediante un comando COPY en el Dockerfile o utilizando el comando docker cp.
    3. Extraiga el contenido del paquete en un directorio dentro del contenedor, por ejemplo, /tmp/driver.
    4. Instale el controlador utilizando la herramienta de línea de comandos del paquete unixODBC, por ejemplo:
    odbcinst -i -d -f /tmp/driver/AccessDriver64.msi -l
    

    (Tenga en cuenta que el nombre del archivo del paquete del controlador puede diferir según la versión y la arquitectura del controlador).

    1. Actualice el archivo de configuración ODBC (/etc/odbcinst.ini) para agregar una nueva entrada para el controlador de Access, por ejemplo:
    [ODBC Drivers]
    ...
    MDB Driver (*.mdb) = Installed
    ACCDB Driver (*.accdb) = Installed
    
    [Microsoft Access Driver (*.mdb, *.accdb)]
    Description = Microsoft Access Driver (*.mdb, *.accdb)
    Driver = /usr/local/lib/libmdbodbc.so
    Setup = /usr/local/lib/libodbcmyS.so
    FileUsage = 1
    

    (Tenga en cuenta que las rutas y nombres de archivo pueden diferir según la versión del controlador y la ubicación de la instalación).

    1. Pruebe el controlador utilizando un script de pyodbc similar al de la pregunta.

    Tenga en cuenta que esta solución no es compatible oficialmente con Microsoft o Alpine Linux, y puede requerir configuración o personalización adicionales según el caso de uso específico.

Comments are closed.