Der Build stürzt aufgrund einer fehlenden Datei systematisch ab, während versucht wird, PHP ODBC zu erstellen, abhängig vom Befehl „
Code: Select all
RUN docker-php-ext-install odbc
ODBC ist in einem kleinen PHP-Skript erforderlich, das ich verwende, um Daten von einem Microsoft SQL Server abzurufen. Gibt es eine Alternative, die ich dazu verwenden kann? Benötigen Sie nicht die ODBC-PHP-Erweiterung?
Die genaue Fehlermeldung lautet:
Code: Select all
113.9 configure: error: ODBC header file '/usr/local/incl/sqlext.h' not found!
------
failed to solve: process "/bin/sh -c docker-php-ext-install pdo pdo_mysql mysqli intl zip gd opcache xsl gd odbc" did not complete successfully: exit code: 1
Code: Select all
FROM php:8.3-apache
# Apache configuration
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf
RUN a2enmod rewrite
# Install system dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
git \
unzip \
libicu-dev \
libzip-dev \
libpng-dev \
libxml2-dev \
libxslt-dev \
unixodbc \
unixodbc-dev \
gpg \
curl \
wget \
build-essential \
gnupg2 \
ca-certificates \
libapache2-mod-fcgid \
locales coreutils apt-utils git \
&& rm -rf /var/lib/apt/lists/*
# Install composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
WORKDIR /var/www/html
COPY . .
ENV COMPOSER_ALLOW_SUPERUSER=1
RUN git config --global --add safe.directory /var/www/html
# Install PHP dependencies and optimize
RUN composer install --no-dev --no-scripts --optimize-autoloader \
&& composer dump-autoload --optimize \
&& composer dump-env prod
# Install Microsoft ODBC driver and SQLSRV extension
RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg
RUN curl https://packages.microsoft.com/config/debian/12/prod.list > /etc/apt/sources.list.d/mssql-release.list
RUN apt-get update && ACCEPT_EULA=Y apt-get install -y msodbcsql18
# Install the SQLSRV and PDO_SQLSRV PHP extensions
RUN pecl install sqlsrv pdo_sqlsrv \
&& docker-php-ext-enable sqlsrv pdo_sqlsrv
# Install MS SQL client dependencies
RUN apt-get install -y msodbcsql18
# SQLSRV and PDO_SQLSRV extensions configuration
RUN echo "extension=sqlsrv.so" >> /usr/local/etc/php/conf.d/docker-php-ext-sqlsrv.ini
RUN echo "extension=pdo_sqlsrv.so" >> /usr/local/etc/php/conf.d/docker-php-ext-pdo-sqlsrv.ini
RUN echo "extension=odbc.so" >> /usr/local/etc/php/conf.d/odbc.ini
# PHP extensions
RUN docker-php-ext-install \
pdo \
pdo_mysql \
mysqli \
intl \
zip \
gd \
opcache \
xsl \
gd \
odbc
# Set permissions for the application files
RUN chown -R www-data:www-data /var/www/html
# Configure PHP OPcache
RUN { \
echo 'opcache.memory_consumption=128'; \
echo 'opcache.interned_strings_buffer=8'; \
echo 'opcache.max_accelerated_files=4000'; \
echo 'opcache.revalidate_freq=0'; \
echo 'opcache.fast_shutdown=1'; \
echo 'opcache.enable_cli=1'; \
} > /usr/local/etc/php/conf.d/opcache-recommended.ini
# Copy Apache VirtualHost configuration
COPY vhost.conf /etc/apache2/sites-available/000-default.conf
EXPOSE 80
# Run Apache in the foreground
CMD ["apache2-foreground"]```