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_IMAGEFROM $BASE_IMAGECOPY 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-pearRUN /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-2017curl 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 9curl https://packages.microsoft.com/config/debian/9/prod.list >/etc/apt/sources.list.d/mssql-release.list && apt-get updateapt-get install -y curl apt-transport-httpsfor v in $PHP_VERSIONS; do apt-get install -y "$v" "$v"-dev "$v"-xmldoneACCEPT_EULA=Y apt-get install -y msodbcsql17# optional: for bcp and sqlcmdACCEPT_EULA=Y apt-get install -y mssql-toolsecho 'export PATH="$PATH:/opt/mssql-tools/bin"' >>~/.bash_profileecho 'export PATH="$PATH:/opt/mssql-tools/bin"' >>~/.bashrc# optional: for unixODBC development headersapt-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/48352487for 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_sqlsrvdonefor 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*.inidonephpenmod 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.
Weitere Beiträge aus der Reihe TYPO3 Tipps und Tricks
-
TYPO3 11 - Custom Backend Module mit List-Module
-
Suche in der Listenansicht verbessern (im TYPO3-Backend)
-
UriBuilder im Backend-Context - Links im Backend-Context erstellen
-
Seite programmatisch erstellen / Create Page Programmatically
-
Microsoft SQL Server (MSSQL) und TYPO3 in einem Docker-Container
-
Manueller/Programmatischer Login in Controller-Action (TYPO3 9)
Weitere interessante Beiträge zum Thema TYPO3 findest du hier.
Wir entwickeln digitale Lösungen mit Leidenschaft
Warum wir das tun? Weil die Verwirklichung Ihrer Vision unser größter Anspruch und die schönste Anerkennung ist. Deshalb nehmen wir uns gerne ausreichend Zeit für die Realisierung Ihres digitalen Projekts.
Kontaktieren Sie uns, wir sind gerne für Ihre Fragen da: