Última actividad 2 months ago

Revisión 941275aac41c2b04f3f1cdf6747b160738a40dca

Dockerfile Sin formato
1# 強制指定使用 bookworm (Debian 12) 基礎映像檔,避免 Trixie 的套件衝突
2FROM php:8.2-apache-bookworm
3
4SHELL ["/bin/bash", "-o", "pipefail", "-c"]
5
6# 1. 修正網路連線並安裝系統相依套件
7RUN rm -f /etc/apt/sources.list.d/debian.sources /etc/apt/sources.list && \
8 printf "deb https://free.nchc.org.tw/debian bookworm main contrib non-free non-free-firmware\n\
9deb https://free.nchc.org.tw/debian bookworm-updates main contrib non-free non-free-firmware\n\
10deb https://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware\n" > /etc/apt/sources.list && \
11 # 第一次 update 必須跳過驗證
12 apt-get -o Acquire::https::Verify-Peer=false update && \
13 apt-get install -y --no-install-recommends -o Acquire::https::Verify-Peer=false \
14 ca-certificates \
15 curl \
16 gnupg \
17 gnupg2 && \
18 # 第二步:有了證書後安裝其餘套件(Bookworm 絕對不會有 libssl 版本衝突)
19 apt-get update && apt-get install -y --no-install-recommends \
20 lsb-release \
21 libfreetype6-dev \
22 libjpeg62-turbo-dev \
23 libpng-dev \
24 libgmp-dev \
25 libxml2-dev \
26 libcurl4-gnutls-dev \
27 libmariadb-dev-compat \
28 libmariadb-dev \
29 libpq-dev \
30 libsqlite3-dev \
31 unixodbc-dev \
32 libmemcached-dev \
33 zlib1g-dev \
34 && rm -rf /var/lib/apt/lists/*
35
36# 2. 安裝微軟 ODBC Driver for SQL Server
37RUN curl -fsSL https://packages.microsoft.com/keys/microsoft.asc \
38 | gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg \
39 && echo "deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/microsoft-prod.gpg] https://packages.microsoft.com/debian/12/prod bookworm main" \
40 > /etc/apt/sources.list.d/mssql-release.list \
41 && apt-get update && ACCEPT_EULA=Y apt-get install -y --no-install-recommends \
42 msodbcsql18 \
43 mssql-tools18 \
44 && rm -rf /var/lib/apt/lists/*
45
46ENV PATH="$PATH:/opt/mssql-tools18/bin"
47
48# 3. 安裝 PHP 內建擴充
49RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
50 && docker-php-ext-configure gmp \
51 && docker-php-ext-install -j"$(nproc)" \
52 gd exif gmp mysqli pdo_mysql pdo_pgsql pgsql pdo_sqlite opcache
53
54# 4. 安裝 PECL 擴充
55RUN pecl install channel://pecl.php.net/xmlrpc-1.0.0RC3 \
56 && pecl install sqlsrv pdo_sqlsrv \
57 && pecl install memcached \
58 && docker-php-ext-enable xmlrpc sqlsrv pdo_sqlsrv memcached
59
60# SQL Server TLS workaround
61RUN echo 'openssl_conf = default_conf' > /etc/ssl/openssl_custom.cnf \
62 && echo '[default_conf]' >> /etc/ssl/openssl_custom.cnf \
63 && echo 'ssl_conf = ssl_sect' >> /etc/ssl/openssl_custom.cnf \
64 && echo '[ssl_sect]' >> /etc/ssl/openssl_custom.cnf \
65 && echo 'system_default = system_default_sect' >> /etc/ssl/openssl_custom.cnf \
66 && echo '[system_default_sect]' >> /etc/ssl/openssl_custom.cnf \
67 && echo 'CipherString = DEFAULT@SECLEVEL=0' >> /etc/ssl/openssl_custom.cnf \
68 && echo 'Options = UnsafeLegacyRenegotiation' >> /etc/ssl/openssl_custom.cnf
69
70ENV OPENSSL_CONF=/etc/ssl/openssl_custom.cnf
71
72WORKDIR /var/www/html
73RUN a2enmod rewrite
docker-compose.yml Sin formato
1services:
2 php:
3 image: timmy/php_base:v1.0
4 container_name: php
5 restart: always
6 tty: true
7 stdin_open: true
8 ports:
9 - "8888:80"
10 volumes:
11 - "./html:/var/www/html" # 將目前目錄下的 html 資料夾對映進去
12 environment:
13 MEMCACHED_HOST: memcached
14 MEMCACHED_PORT: 11211
15 depends_on:
16 - memcached
17
18 memcached:
19 image: memcached:1.6
20 command: ["-m", "64", "-p", "11211", "-vv"]
21
22
php.ini Sin formato
1max_execution_time = 120
2memory_limit = 256M
3post_max_size = 80M
4upload_max_filesize = 80M
5date.timezone = "Asia/Taipei"
6