前面跟大家分享了构建php8.0-apache的镜像,由于有个项目需要用到php8.1的镜像,并且需要安装一些其他扩展,今天在这里跟大家分享如何构建php8.1-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.0FROM php:8.1.32-apache# 使用非交互模式以避免在安装过程中出现交互提示ARG DEBIAN_FRONTEND=noninteractive# 更新软件源并安装所需的软件包,包括 Git, unzip, wget, vimRUN 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.confRUN echo "ServerName localhost" >> /etc/apache2/apache2.conf# 时区 - 使用新的 ENV 格式ENV TZ=Asia/ShanghaiRUN 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# 安装bcmathRUN docker-php-ext-install bcmath# 安装zipRUN apt-get update && apt-get install -y \ libzip-dev \ zip \ unzip \ && docker-php-ext-install zip \ && rm -rf /var/lib/apt/lists/*# 安装composerRUN 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 .
接下来就是等待构建完成即可。
这样我们就可以以此作为基础镜像将项目映射进去,进行开发。