# 简化版 Dockerfile
# 构建命令示例：
#   docker build -t tagserver:latest .
#   docker build --no-cache -t tagserver:latest .
# 运行测试命令示例：
#   docker run -it --rm -p 80:80 tagserver:latest
# 本镜像提供一个“空白”环境，仅安装 nginx、python、php 和 mysql，
# 便于初学者在此基础上添加自己的配置和代码。

# 轻量级基础镜像
FROM debian:12.13-slim

# 1. 创建阿里云镜像源文件
# 1. 彻底配置阿里云镜像源
RUN echo "deb http://mirrors.aliyun.com/debian/ bookworm main non-free non-free-firmware" > /etc/apt/sources.list && \
    echo "deb http://mirrors.aliyun.com/debian/ bookworm-updates main non-free non-free-firmware" >> /etc/apt/sources.list && \
    echo "deb http://mirrors.aliyun.com/debian/ bookworm-backports main non-free non-free-firmware" >> /etc/apt/sources.list && \
    echo "deb http://mirrors.aliyun.com/debian-security bookworm-security main non-free non-free-firmware" >> /etc/apt/sources.list && \
    # 可选：移除 sources.list.d 目录下所有可能指向官方的源文件，以确保万无一失
    rm -rf /etc/apt/sources.list.d/*

# 2. 更新系统并安装需要的软件包。nginx、php、python 和 mysql 是常用的 web 开发环境组件。
# 2. 更新系统并安装需要的软件包。nginx、php、python 和 mysql 是常用的 web 开发环境组件。
RUN apt-get update && apt-get install -y --no-install-recommends \
    apt-utils \
    ca-certificates \
    runit \
    wget \
    curl \
    gnupg \
    vim \
    net-tools \
    procps \
    nginx \
    php8.2 php8.2-fpm php8.2-mysql\
    python3 python3-pip \
    mariadb-server\
    mariadb-client\
    bash \
    && rm -rf /var/lib/apt/lists/*

# 1. 环境基础设置
# 设定时区，非必需但推荐设置以避免日志时间混乱
ENV TZ=Asia/Shanghai



# 配置 MariaDB.直接将配置好的文件覆盖默认
COPY MariaDB/50-server.cnf /etc/mysql/mariadb.conf.d/50-server.cnf

#创建 mariadb 的 runit 服务目录和脚本
RUN mkdir -p /etc/service/mariadb
COPY script/mariadb_run.sh /etc/service/mariadb/run
RUN chmod +x /etc/service/mariadb/run

#创建phpfpm的 runit 服务目录和脚本
RUN mkdir -p /etc/service/phpfpm
COPY script/phpfpm_run.sh /etc/service/phpfpm/run
RUN chmod +x /etc/service/phpfpm/run

#创建 nginx 的 runit 服务目录和脚本
RUN mkdir -p /etc/service/nginx
COPY script/nginx_run.sh /etc/service/nginx/run
RUN chmod +x /etc/service/nginx/run
#复制nginx配置文件到容器内的 /etc/nginx/sites-available 目录,按默认配置
COPY /nginx/default  /etc/nginx/sites-available/
#复制前端网页资源到容器镜像内
COPY www/ /var/www/html/
#变更资源权限和所有者
RUN chown -R www-data:www-data /var/www/html && \
    chmod -R 755 /var/www/html


#python 后端应用复制到容器内
COPY python_app/ /opt/python_app/
#创建python后端启动脚本并赋予执行权限
COPY script/python_app_run.sh /etc/service/python_app/run
RUN  chmod +x /etc/service/python_app/run
#python-pip3 根据 /opt/python_app/requirements.txt  拉取依赖
RUN pip3 install --no-cache-dir -i https://mirrors.aliyun.com/pypi/simple/  --break-system-packages  -r /opt/python_app/requirements.txt

# 3. 暴露基础端口
# HTTP 端口
EXPOSE 80 
# MySQL 端口
EXPOSE 3306 

#用runit来启动各个服务脚本
CMD ["/usr/bin/runsvdir", "-P", "/etc/service"]

