Å sette opp en Docker-container med Laravel, PHP 7.4-fpm og Microsoft SQL Server-støtte kan være en utfordring. Her er en komplett guide med en fungerende Dockerfile som inkluderer alt du trenger.
Hvorfor denne kombinasjonen?
Noen prosjekter krever at Laravel snakker med en MSSQL-database. Det betyr at du trenger sqlsrv-driveren for PHP, som ikke er standard inkludert. I tillegg trenger du Microsoft ODBC-drivere i containeren.
Dockerfile
FROM php:7.4-fpm
# 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"]
Docker Compose
version: '3.8'
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
Viktige notater
- ODBC-driverne krever at du aksepterer EULA via
ACCEPT_EULA=Y pdo_sqlsrver nødvendig for Laravel sin database-abstraksjon- Bruk
DB_CONNECTION=sqlsrvi.env - Husk å legge til
'sqlsrv'iconfig/database.phphvis den mangler
Denne Dockerfilen har spart meg for mye hodebry. MSSQL-oppsettet i PHP er notorisk vanskelig, men med riktig Dockerfile går det som en drøm.



