docker构建php8.1-apache镜像

docker构建php8.1-apache镜像

        前面跟大家分享了构建php8.0-apache的镜像,由于有个项目需要用到php8.1的镜像,并且需要安装一些其他扩展,今天在这里跟大家分享如何构建php8.1-apache的镜像。

       一、创建apache网站配置文件

       我们命名一个文件,名字为000-default.conf,内容如下

<VirtualHost *:80>
   ServerAdmin  localhost
   DocumentRoot /var/www/html/public
   <Directory /var/www/html>
      Options Indexes FollowSymLinks MultiViews
      AllowOverride FileInfo Options
      Require all granted
   </Directory>
   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

       二、创建镜像构建文件

       我们在同级目录下创建构建文件,命名为Dockerfile,内容如下

# Version 1.0

FROM php:8.1.32-apache

# 使用标签替代已弃用的 MAINTAINER 指令
LABEL maintainer="hzx790254812@gmail.com"

# 使用非交互模式以避免在安装过程中出现交互提示
ARG DEBIAN_FRONTEND=noninteractive

# 更新软件源并安装所需的软件包,包括 Git, unzip, wget, vim
RUN apt-get update && apt-get install -y --no-install-recommends \
    git \
    unzip \
    wget \
    vim \
    libpng-dev \
    libjpeg-dev \
    libfreetype6-dev \
    gnupg \
    apt-transport-https \
    && apt-get clean && rm -rf /var/lib/apt/lists/*

# 添加 Microsoft ODBC 驱动和 SQL Server 工具的仓库
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
    && curl https://packages.microsoft.com/config/debian/11/prod.list > /etc/apt/sources.list.d/mssql-release.list

# 安装 SQL Server 驱动和依赖
RUN apt-get update && ACCEPT_EULA=Y apt-get install -y \
    unixodbc-dev \
    msodbcsql18 \
    && apt-get clean && rm -rf /var/lib/apt/lists/*

#配置apache配置
RUN ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load \
    && sed -i 's/AllowOverride None/AllowOverride All/g' /etc/apache2/apache2.conf && a2enmod rewrite \
    && sed -i 's/Require all denied/Require all granted/g' /etc/apache2/apache2.conf

RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf

# 时区 - 使用新的 ENV 格式
ENV TZ=Asia/Shanghai
RUN echo ${TZ} >/etc/timezone

# 安装 mysql 扩展
RUN docker-php-ext-install pdo pdo_mysql

# 配置并安装 GD 扩展
RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install gd

# 安装 SQL Server 扩展
RUN pecl install sqlsrv pdo_sqlsrv \
    && docker-php-ext-enable sqlsrv pdo_sqlsrv

# 安装 Swoole 编译依赖
RUN apt-get update && apt-get install -y \
    libssl-dev \
    g++ \
    make \
    autoconf \
    && apt-get clean && rm -rf /var/lib/apt/lists/*

# 安装 Swoole 扩展
RUN pecl install swoole \
    && docker-php-ext-enable swoole

# 清理缓存
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

# 安装 Redis 扩展
RUN pecl install redis && \
    docker-php-ext-enable redis

# 安装bcmath
RUN docker-php-ext-install bcmath

# 安装zip
RUN apt-get update && apt-get install -y \
    libzip-dev \
    zip \
    unzip \
    && docker-php-ext-install zip \
    && rm -rf /var/lib/apt/lists/*

# 安装composer
RUN curl -sS https://getcomposer.org/installer | php -- \
    --install-dir=/usr/local/bin \
    --filename=composer \
    --version=2.5.8 \
    && chmod +x /usr/local/bin/composer

# 安装Redis服务
RUN apt-get update && apt-get install -y redis-server && service redis-server restart

# 删除默认配置文件
RUN rm /etc/apache2/sites-enabled/000-default.conf

# 重写配置文件
COPY 000-default.conf /etc/apache2/sites-enabled/

# 设置权限
RUN chmod 775 /var/www/html

# 设置 Apache 用户和组
RUN chown -R www-data:www-data /var/www/html

# 设置 PHP 用户和组
RUN usermod -u 1000 www-data && groupmod -g 1000 www-data

# 设置容器启动时执行的命令
CMD ["apache2-foreground"]

这里我们php:8.1.32-apache作为基础镜像,然后安装项目所需的php扩展,大家可以根据自己的需求进行动态调整,或者跟我一样 。

       三、执行构建命令

       我们直接执行以下命令行进行镜像构建

docker build -t hongzhuangxian/php8.1_apache .

接下来就是等待构建完成即可。

       这样我们就可以以此作为基础镜像将项目映射进去,进行开发。


0条评论

发表评论