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.
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: