Um einen Microsoft SQL-Server in einer ddev-Umgebung zum laufen zu bringen, muss die Datei "docker-compose.override.yaml" im .ddev-Ordner erstellt werden. In diese Datei muss der folgende Code kopiert werden:
version: '3.6'
services:
web:
environment:
- TYPO3_CONTEXT=Development
links:
- mssql:mssql
mssql:
# https://hub.docker.com/_/microsoft-mssql-server
image: "mcr.microsoft.com/mssql/server"
volumes:
- mssql-db-data:/var/opt/mssql/
# Volume wird verwendet um das bestehende SQL-Backup zu importieren
- sql-backup:/var/opt/sql-backup
environment:
SA_PASSWORD: "MyPassword001"
ACCEPT_EULA: "Y"
ports:
- "1433:1433"
volumes:
mssql-db-data:
driver: local
Damit läuft nun der Microsoft SQL-Server in einem Docker-Image. Damit man nun auch Abfragen ausführen kann im TYPO3 (zBsp. per Doctrine/QueryBuilder) muss zusätzlich noch der passende PHP-Treiber installiert werden. Dazu muss zuerst folgendes Dockerfile mit dem name "Dockerfile"im Ordner web-build erstellt werden:
ARG BASE_IMAGE
FROM $BASE_IMAGE
COPY install_sqlsrv.sh /tmp/
RUN apt-get update && DEBIAN_FRONTEND=noninteractive sudo apt-get install -y -o Dpkg::Options::="--force-confold" --no-install-recommends --no-install-suggests gcc make autoconf libc-dev pkg-config php-pear
RUN /bin/bash /tmp/install_sqlsrv.sh
Anschließend muss noch dieses Skript ebenfalls im web-Build-Ordner mit dem Namen "install_sqlsrv.sh" erstellt werden:
#!/bin/bash
# This script installs MSSQL server. Contains some ddev-specific tweaks:
# - doesn't add ondrej's repo because that's already added
# - doesn't source .bashrc because that will happen anyway.
# - doesn't restart Apache; it's not started at this point.
# - assumes it's being run under sudo anyway and doesn't use sudo or su or exit
# - tries to run apt update as few times as possible
# - Apache's mpm_event module is already disabled.
# Those don't work well with Docker builds.
# https://docs.microsoft.com/en-us/sql/connect/php/installation-tutorial-linux-mac?view=sql-server-2017#step-1-install-php-2
# Some of these packages will be redundant.
export DEBIAN_FRONTEND=noninteractive
# Install sqlsrv drivers.
export PHP_VERSIONS="php7.4"
# Note: Only works for PHP 7.0+.
export PHP_SUFFIXES="7.4"
# https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-2017
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
#Download appropriate package for the OS version
#Choose only ONE of the following, corresponding to your OS version
#Debian 9
curl https://packages.microsoft.com/config/debian/9/prod.list >/etc/apt/sources.list.d/mssql-release.list &&
apt-get update
apt-get install -y curl apt-transport-https
for v in $PHP_VERSIONS; do
apt-get install -y "$v" "$v"-dev "$v"-xml
done
ACCEPT_EULA=Y apt-get install -y msodbcsql17
# optional: for bcp and sqlcmd
ACCEPT_EULA=Y apt-get install -y mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >>~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >>~/.bashrc
# optional: for unixODBC development headers
apt-get install -y unixodbc-dev
# https://docs.microsoft.com/en-us/sql/connect/php/installation-tutorial-linux-mac?view=sql-server-2017#step-3-install-the-php-drivers-for-microsoft-sql-server
# See https://stackoverflow.com/questions/40419718/how-to-install-php-extension-using-pecl-for-specific-php-version-when-several-p/48352487
for v in $PHP_SUFFIXES; do
pecl -d php_suffix="$v" install sqlsrv
pecl -d php_suffix="$v" install pdo_sqlsrv
# This does not remove the extensions; it just removes the metadata that says
# the extensions are installed.
pecl uninstall -r sqlsrv
pecl uninstall -r pdo_sqlsrv
done
for v in $PHP_SUFFIXES; do
printf "; priority=20\nextension=sqlsrv.so\n" >/etc/php/"$v"/mods-available/sqlsrv.ini
printf "; priority=30\nextension=pdo_sqlsrv.so\n" >/etc/php/"$v"/mods-available/pdo_sqlsrv.ini
chmod 666 /etc/php/"$v"/mods-available/*sqlsrv*.ini
done
phpenmod sqlsrv pdo_sqlsrv
# Step 4 skipped because Apache is already configured.
# Step 5 skipped because Apache is not started at this point.
# Reduce image size some.
rm -rf /var/lib/apt/lists/*
Nach einem "ddev start" kann nun die MSSQL-Datenbank ganz normal verwendet werden.
Nützliche Links / Quellen
Danke an Christian Sonntag und rfay.