Docker-image med Laravel, PHP 7.4-fpm og MSSQL

Under er en Dockerfile og en Docker Compose-fil for Laravel på PHP 7.4-fpm med støtte for Microsoft SQL Server.
Hva MSSQL krever
Skal Laravel snakke med en MSSQL-database, trenger PHP sqlsrv-driveren, som ikke er med som standard. Containeren trenger også Microsoft ODBC-drivere.
Dockerfile
FROM php:7.4-fpmDocker Compose
# Installer systemavhengigheter
RUN apt-get update && apt-get install -y \
git curl zip unzip libpng-dev libjpeg-dev \
libfreetype6-dev libonig-dev libxml2-dev \
gnupg2 apt-transport-https
# Microsoft ODBC-drivere
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
&& curl https://packages.microsoft.com/config/debian/10/prod.list \
> /etc/apt/sources.list.d/mssql-release.list \
&& apt-get update \
&& ACCEPT_EULA=Y apt-get install -y msodbcsql17 unixodbc-dev
# PHP-utvidelser
RUN docker-php-ext-install pdo mbstring exif pcntl bcmath gd
RUN pecl install sqlsrv pdo_sqlsrv \
&& docker-php-ext-enable sqlsrv pdo_sqlsrv
# Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
WORKDIR /var/www/html
COPY . .
RUN composer install --no-dev --optimize-autoloader
EXPOSE 9000
CMD ["php-fpm"]version: '3.8'Merknader
services:
app:
build: .
volumes:
- .:/var/www/html
ports:
- "9000:9000"
environment:
- DB_CONNECTION=sqlsrv
- DB_HOST=mssql
- DB_DATABASE=mydb
- DB_USERNAME=sa
- DB_PASSWORD=YourPassword123
ODBC-driverne krever at du aksepterer EULA via ACCEPT_EULA=Y.pdo_sqlsrv er nødvendig for Laravel sin database-abstraksjon.Sett DB_CONNECTION=sqlsrv i .env.Legg til 'sqlsrv' i config/database.php hvis den mangler.
MSSQL-støtte i PHP er tungvint å sette opp for hånd, og denne Dockerfilen har spart meg for mye arbeid.


