-
Notifications
You must be signed in to change notification settings - Fork 80
Open
Description
Here is a hacky solution to enable MSSQL (link).
- Update PHP to 8
- Install
gpg,sudo - Add and run
msodbc.sh - Install
autoconf,make,g++,unixodbc-dev peclinstall and enablepdo_sqlsrv,sqlsrv- Add
TrustServerCertificatetoadminer.php
# Dockerfile
FROM php:8-alpine
RUN echo "upload_max_filesize = 128M" >> /usr/local/etc/php/conf.d/0-upload_large_dumps.ini \
&& echo "post_max_size = 128M" >> /usr/local/etc/php/conf.d/0-upload_large_dumps.ini \
&& echo "memory_limit = 1G" >> /usr/local/etc/php/conf.d/0-upload_large_dumps.ini \
&& echo "max_execution_time = 600" >> /usr/local/etc/php/conf.d/0-upload_large_dumps.ini \
&& echo "max_input_vars = 5000" >> /usr/local/etc/php/conf.d/0-upload_large_dumps.ini
STOPSIGNAL SIGINT
RUN addgroup -S adminer \
&& adduser -S -G adminer adminer \
&& mkdir -p /var/www/html \
&& mkdir /var/www/html/plugins-enabled \
&& chown -R adminer:adminer /var/www/html
WORKDIR /var/www/html
RUN apk add --no-cache --virtual .build-deps gpg sudo
COPY msodbc.sh /var/www/html/
RUN sh msodbc.sh
RUN set -x \
&& apk add --no-cache --virtual .build-deps \
autoconf \
make \
g++ \
unixodbc-dev \
postgresql-dev \
sqlite-dev \
unixodbc-dev \
freetds-dev \
&& docker-php-ext-configure pdo_odbc --with-pdo-odbc=unixODBC,/usr \
&& docker-php-ext-install \
mysqli \
pdo_pgsql \
pdo_sqlite \
pdo_odbc \
pdo_dblib \
&& docker-php-source extract \
&& pecl install pdo_sqlsrv \
&& pecl install sqlsrv \
&& docker-php-ext-enable pdo_sqlsrv sqlsrv \
&& docker-php-source delete \
&& runDeps="$( \
scanelf --needed --nobanner --format '%n#p' --recursive /usr/local/lib/php/extensions \
| tr ',' '\n' \
| sort -u \
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
)" \
&& apk add --virtual .phpexts-rundeps $runDeps \
&& apk del --no-network .build-deps
COPY *.php /var/www/html/
ENV ADMINER_VERSION 4.8.1
ENV ADMINER_DOWNLOAD_SHA256 2fd7e6d8f987b243ab1839249551f62adce19704c47d3d0c8dd9e57ea5b9c6b3
ENV ADMINER_COMMIT 1f173e18bdf0be29182e0d67989df56eadea4754
RUN set -x \
&& apk add --no-cache --virtual .build-deps git \
&& curl -fsSL "https://github.com/vrana/adminer/releases/download/v$ADMINER_VERSION/adminer-$ADMINER_VERSION.php" -o adminer.php \
&& echo "$ADMINER_DOWNLOAD_SHA256 adminer.php" |sha256sum -c - \
&& git clone --recurse-submodules=designs --depth 1 --shallow-submodules --branch "v$ADMINER_VERSION" https://github.com/vrana/adminer.git /tmp/adminer \
&& commit="$(git -C /tmp/adminer/ rev-parse HEAD)" \
&& [ "$commit" = "$ADMINER_COMMIT" ] \
&& cp -r /tmp/adminer/designs/ /tmp/adminer/plugins/ . \
&& rm -rf /tmp/adminer/ \
&& apk del --no-network .build-deps
RUN sed -i 's/"CharacterSet"=>"UTF-8"/"CharacterSet"=>"UTF-8","TrustServerCertificate"=>"Yes"/g' adminer.php
COPY entrypoint.sh /usr/local/bin/
ENTRYPOINT [ "entrypoint.sh", "docker-php-entrypoint" ]
USER adminer
CMD [ "php", "-S", "[::]:8080", "-t", "/var/www/html" ]
EXPOSE 8080
And the additional MS ODBC installation script (link):
# msodbc.sh
case $(uname -m) in
x86_64) architecture="amd64" ;;
arm64) architecture="arm64" ;;
*) architecture="unsupported" ;;
esac
if [[ "unsupported" == "$architecture" ]];
then
echo "Alpine architecture $(uname -m) is not currently supported.";
exit;
fi
#Download the desired package(s)
curl -O https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/msodbcsql18_18.3.3.1-1_$architecture.apk
curl -O https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/mssql-tools18_18.3.1.1-1_$architecture.apk
#(Optional) Verify signature, if 'gpg' is missing install it using 'apk add gnupg':
curl -O https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/msodbcsql18_18.3.3.1-1_$architecture.sig
curl -O https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/mssql-tools18_18.3.1.1-1_$architecture.sig
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --import -
gpg --verify msodbcsql18_18.3.3.1-1_$architecture.sig msodbcsql18_18.3.3.1-1_$architecture.apk
gpg --verify mssql-tools18_18.3.1.1-1_$architecture.sig mssql-tools18_18.3.1.1-1_$architecture.apk
#Install the package(s)
sudo apk add --allow-untrusted msodbcsql18_18.3.3.1-1_$architecture.apk
sudo apk add --allow-untrusted mssql-tools18_18.3.1.1-1_$architecture.apk
Sadly I see a lot of warning messages on the pages:
Warning: Trying to access array offset on null in /var/www/html/adminer.php on line 1452
Warning: Trying to access array offset on null in /var/www/html/adminer.php on line 1771
Warning: Trying to access array offset on null in /var/www/html/adminer.php on line 1772
Warning: Trying to access array offset on null in /var/www/html/adminer.php on line 1777
jnovax
Metadata
Metadata
Assignees
Labels
No labels