Dockerfile
· 2.3 KiB · Docker
Bruto
FROM php:8.2-apache
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
# 1. 安裝系統相依套件
RUN apt-get update && apt-get install -y --no-install-recommends \
gnupg2 \
curl \
lsb-release \
ca-certificates \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
libgmp-dev \
libxml2-dev \
libcurl4-gnutls-dev \
libmariadb-dev-compat \
libmariadb-dev \
libpq-dev \
libsqlite3-dev \
unixodbc-dev \
libmemcached-dev \
zlib1g-dev \
&& rm -rf /var/lib/apt/lists/*
# 2. 安裝微軟 ODBC Driver for SQL Server
RUN curl -fsSL https://packages.microsoft.com/keys/microsoft.asc \
| gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg \
&& echo "deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/microsoft-prod.gpg] https://packages.microsoft.com/debian/12/prod bookworm main" \
> /etc/apt/sources.list.d/mssql-release.list \
&& apt-get update \
&& ACCEPT_EULA=Y apt-get install -y --no-install-recommends \
msodbcsql18 \
mssql-tools18 \
&& rm -rf /var/lib/apt/lists/*
ENV PATH="$PATH:/opt/mssql-tools18/bin"
# 3. 安裝 PHP 內建擴充(加上 opcache)
RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-configure gmp \
&& docker-php-ext-install -j"$(nproc)" \
gd exif gmp mysqli pdo_mysql pdo_pgsql pgsql pdo_sqlite opcache
# 4. 安裝 PECL 擴充(加上 memcached)
RUN pecl install channel://pecl.php.net/xmlrpc-1.0.0RC3 \
&& pecl install sqlsrv pdo_sqlsrv \
&& pecl install memcached \
&& docker-php-ext-enable xmlrpc sqlsrv pdo_sqlsrv memcached
# SQL Server TLS workaround
RUN echo 'openssl_conf = default_conf' > /etc/ssl/openssl_custom.cnf \
&& echo '[default_conf]' >> /etc/ssl/openssl_custom.cnf \
&& echo 'ssl_conf = ssl_sect' >> /etc/ssl/openssl_custom.cnf \
&& echo '[ssl_sect]' >> /etc/ssl/openssl_custom.cnf \
&& echo 'system_default = system_default_sect' >> /etc/ssl/openssl_custom.cnf \
&& echo '[system_default_sect]' >> /etc/ssl/openssl_custom.cnf \
&& echo 'CipherString = DEFAULT@SECLEVEL=0' >> /etc/ssl/openssl_custom.cnf \
&& echo 'Options = UnsafeLegacyRenegotiation' >> /etc/ssl/openssl_custom.cnf
ENV OPENSSL_CONF=/etc/ssl/openssl_custom.cnf
WORKDIR /var/www/html
RUN a2enmod rewrite
| 1 | FROM php:8.2-apache |
| 2 | |
| 3 | SHELL ["/bin/bash", "-o", "pipefail", "-c"] |
| 4 | |
| 5 | # 1. 安裝系統相依套件 |
| 6 | RUN apt-get update && apt-get install -y --no-install-recommends \ |
| 7 | gnupg2 \ |
| 8 | curl \ |
| 9 | lsb-release \ |
| 10 | ca-certificates \ |
| 11 | libfreetype6-dev \ |
| 12 | libjpeg62-turbo-dev \ |
| 13 | libpng-dev \ |
| 14 | libgmp-dev \ |
| 15 | libxml2-dev \ |
| 16 | libcurl4-gnutls-dev \ |
| 17 | libmariadb-dev-compat \ |
| 18 | libmariadb-dev \ |
| 19 | libpq-dev \ |
| 20 | libsqlite3-dev \ |
| 21 | unixodbc-dev \ |
| 22 | libmemcached-dev \ |
| 23 | zlib1g-dev \ |
| 24 | && rm -rf /var/lib/apt/lists/* |
| 25 | |
| 26 | # 2. 安裝微軟 ODBC Driver for SQL Server |
| 27 | RUN curl -fsSL https://packages.microsoft.com/keys/microsoft.asc \ |
| 28 | | gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg \ |
| 29 | && echo "deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/microsoft-prod.gpg] https://packages.microsoft.com/debian/12/prod bookworm main" \ |
| 30 | > /etc/apt/sources.list.d/mssql-release.list \ |
| 31 | && apt-get update \ |
| 32 | && ACCEPT_EULA=Y apt-get install -y --no-install-recommends \ |
| 33 | msodbcsql18 \ |
| 34 | mssql-tools18 \ |
| 35 | && rm -rf /var/lib/apt/lists/* |
| 36 | |
| 37 | ENV PATH="$PATH:/opt/mssql-tools18/bin" |
| 38 | |
| 39 | # 3. 安裝 PHP 內建擴充(加上 opcache) |
| 40 | RUN docker-php-ext-configure gd --with-freetype --with-jpeg \ |
| 41 | && docker-php-ext-configure gmp \ |
| 42 | && docker-php-ext-install -j"$(nproc)" \ |
| 43 | gd exif gmp mysqli pdo_mysql pdo_pgsql pgsql pdo_sqlite opcache |
| 44 | |
| 45 | # 4. 安裝 PECL 擴充(加上 memcached) |
| 46 | RUN pecl install channel://pecl.php.net/xmlrpc-1.0.0RC3 \ |
| 47 | && pecl install sqlsrv pdo_sqlsrv \ |
| 48 | && pecl install memcached \ |
| 49 | && docker-php-ext-enable xmlrpc sqlsrv pdo_sqlsrv memcached |
| 50 | |
| 51 | # SQL Server TLS workaround |
| 52 | RUN echo 'openssl_conf = default_conf' > /etc/ssl/openssl_custom.cnf \ |
| 53 | && echo '[default_conf]' >> /etc/ssl/openssl_custom.cnf \ |
| 54 | && echo 'ssl_conf = ssl_sect' >> /etc/ssl/openssl_custom.cnf \ |
| 55 | && echo '[ssl_sect]' >> /etc/ssl/openssl_custom.cnf \ |
| 56 | && echo 'system_default = system_default_sect' >> /etc/ssl/openssl_custom.cnf \ |
| 57 | && echo '[system_default_sect]' >> /etc/ssl/openssl_custom.cnf \ |
| 58 | && echo 'CipherString = DEFAULT@SECLEVEL=0' >> /etc/ssl/openssl_custom.cnf \ |
| 59 | && echo 'Options = UnsafeLegacyRenegotiation' >> /etc/ssl/openssl_custom.cnf |
| 60 | |
| 61 | ENV OPENSSL_CONF=/etc/ssl/openssl_custom.cnf |
| 62 | |
| 63 | WORKDIR /var/www/html |
| 64 | RUN a2enmod rewrite |
| 65 |