,

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

Å 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_sqlsrv er nødvendig for Laravel sin database-abstraksjon
  • Bruk DB_CONNECTION=sqlsrv i .env
  • Husk å legge til 'sqlsrv' i config/database.php hvis 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.


Trenger du hjelp med dette?

Ta kontakt for en uforpliktende prat om hvordan jeg kan hjelpe deg.



Navn