系統環境:
– Ubuntu 18.04
– SQL SQL Server 2008 Express
– PHP 7.4
安裝 ODBC 套件
sudo su curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - curl https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list > /etc/apt/sources.list.d/mssql-release.list exit sudo apt-get update sudo ACCEPT_EULA=Y apt-get install -y msodbcsql17 # optional: for unixODBC development headers sudo apt-get install -y unixodbc-dev
安裝 PHP DEV 套件
sudo apt install php7.4-dev sudo apt install php7.4-xml
安裝 php 驅動
版本來源: https://github.com/Microsoft/msphpsql/releases
sudo pecl install sqlsrv-5.7.1preview sudo pecl install pdo_sqlsrv-5.7.1preview sudo su printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/7.4/mods-available/sqlsrv.ini printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/7.4/mods-available/pdo_sqlsrv.ini exit sudo phpenmod -v 7.4 sqlsrv pdo_sqlsrv
Docker 的 Dockerfile 檔案 (Nginx + PHP-FPM)
FROM --platform=linux/amd64 ubuntu:18.04 ## 基本時區設定 ARG DEBIAN_FRONTEND=noninteractive ENV TZ=Asia/Taipei RUN apt-get update ## 安裝 nginx RUN apt-get install -y lsb-release RUN apt-get install -y nginx ## 安裝 php RUN apt-get install -y curl apt-transport-https RUN apt-get -y install software-properties-common RUN add-apt-repository ppa:ondrej/php RUN apt-get update RUN apt-get install -y php7.4 php7.4-fpm php7.4-dev php7.4-xml php7.4-intl php7.4-dev ## 安裝 ODBC RUN apt-get install -y gnupg2 RUN apt-get install -y curl apt-transport-https wget RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - RUN curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list RUN apt-get update RUN ACCEPT_EULA=Y apt-get install -y msodbcsql17 ## 安裝 php pdo 驅動 RUN apt-get install -y unixodbc-dev RUN pecl install sqlsrv-5.7.1preview RUN pecl install pdo_sqlsrv-5.7.1preview RUN printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/7.4/mods-available/sqlsrv.ini RUN printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/7.4/mods-available/pdo_sqlsrv.ini RUN phpenmod -v 7.4 sqlsrv pdo_sqlsrv ## 設定 nginx COPY ./entrypoints/nginx-php-entrypoint.sh /etc/entrypoint.sh RUN chmod +x /etc/entrypoint.sh EXPOSE 80 ENTRYPOINT ["/etc/entrypoint.sh"]
entrypoint.sh 內容
#!/bin/bash service nginx start /etc/init.d/php7.4-fpm tail -f /dev/null