# OS: Ubuntu 24.04
# PHP: 7.4
# Nodejs: 20

FROM ubuntu:24.04

# 版本參數
ARG NODE_VERSION=20
ARG PHP_VERSION=7.4

# 環境變數
ENV TZ="Asia/Taipei" \
    DEBIAN_FRONTEND=noninteractive \
    NODE_MAJOR=${NODE_VERSION}

WORKDIR /var/www/html

# 1. 設置時區和基礎系統更新（很少變動）
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \
    && echo $TZ > /etc/timezone

# 2. 安裝系統套件 和 Apache（較少變動）
RUN apt-get update && apt-get upgrade -y \
    && apt-get install -y \
        software-properties-common \
        ca-certificates \
        lsb-release \
        apt-transport-https \
        gnupg \
        zip \
        unzip \
        git \
        curl \
        vim \
        wget \
        cron \
        apache2 \
        apache2-utils \
        mysql-client \
        python3-pip \
        locales \
        language-pack-zh-hans \
    # 設置語系
    && locale-gen zh_TW.UTF-8 \
    # 添加 PHP repository
    && add-apt-repository ppa:ondrej/php \
    # 添加 NodeSource repository
    && mkdir -p /etc/apt/keyrings \
    && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
    && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_${NODE_MAJOR}.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \
    # 更新並安裝所有套件
    && apt-get update \
    && apt-get install -y nodejs \
    # 安裝全域 npm 套件
    && npm install -g handlebars

# 3. 安裝 PHP 套件
RUN apt-get update && apt-get install -y \
    php${PHP_VERSION} \
    php${PHP_VERSION}-mysql \
    php${PHP_VERSION}-gd \
    php${PHP_VERSION}-zip \
    php${PHP_VERSION}-mbstring \
    php${PHP_VERSION}-pdo \
    php${PHP_VERSION}-xml \
    php${PHP_VERSION}-curl \
    php${PHP_VERSION}-bcmath \
    # 安裝 Composer
    && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer \
    # 清理
    && apt-get -y autoremove \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
    # Apache 設置
    && a2enmod rewrite

# 4. 複製配置文件（經常變動，放最後）
COPY ./bashrc /tmp/.bashrc
RUN cat /tmp/.bashrc >> /etc/skel/.bashrc \
    && cat /tmp/.bashrc >> /root/.bashrc \
    && rm -rf /tmp/*

EXPOSE 80

CMD ["apache2ctl", "-D", "FOREGROUND"]
