Found the solution
This is the default Laravel Dockerfile
# syntax = docker/dockerfile:experimental
# Default to PHP 8.2, but we attempt to match
# the PHP version from the user (wherever `flyctl launch` is run)
# Valid version values are PHP 7.4+
ARG PHP_VERSION=8.2
ARG NODE_VERSION=18
FROM fideloper/fly-laravel:${PHP_VERSION} as base
# PHP_VERSION needs to be repeated here
# See https://docs.docker.com/engine/reference/builder/#understand-how-arg-and-from-interact
ARG PHP_VERSION
LABEL fly_launch_runtime="laravel"
### ====> We will add the sqlsrv driver here
# copy application code, skipping files based on .dockerignore
COPY . /var/www/html
...
this snippet will do the job:
### PHP sqlsrv ext
#pecl
RUN apt-get update && apt-get install -y php-xml
RUN apt-get update && apt-get install -y php-dev php-pear
RUN apt-get update && apt-get install -y mcrypt php-mbstring php-mysql
ENV ACCEPT_EULA=Y
RUN apt-get update && apt-get install -y xz-utils
RUN apt-get update && apt-get install -y gnupg2
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.list #this is version - specific, Flyio's image is ubuntu 20.04
RUN apt-get update
RUN ACCEPT_EULA=Y apt-get -y --no-install-recommends install msodbcsql18 unixodbc-dev #specify the version, i use version 18: msodbcsql18
# install ODBC Driver
RUN apt-get install -y mssql-tools
RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
RUN exec bash
# install driver sqlsrv
RUN pecl install sqlsrv
RUN pecl install pdo_sqlsrv
#
RUN printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/8.2/mods-available/sqlsrv.ini
RUN printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.2/mods-available/pdo_sqlsrv.ini
RUN phpenmod -v 8.2 sqlsrv pdo_sqlsrv