Docker
docker构建php8.0-apache镜像
docker构建php8.0-apache镜像
最近接了一个活,项目用的是tp8.0,我本地开发环境用的是docker,之前也搞了一个php-apache的镜像,不过PHP版本是7.2,看了tp8.0要求的PHP版本是8.0的,所以打算再撸一个PHP8.0-apache的镜像。
一、创建apache网站配置文件
我们命名一个文件,名字为000-default.conf,内容如下
ServerAdmin localhost
DocumentRoot /var/www/html/public
Options Indexes FollowSymLinks MultiViews
AllowOverride FileInfo Options
Require all granted
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined二、创建镜像构建文件
我们在同级目录下创建构建文件,命名为Dockerfile,内容如下
# Version 1.0 FROM php:8.0-apache # 维护者信息 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 \ && apt-get clean && rm -rf /var/lib/apt/lists/* # 安装 zip 扩展(mPDF 需要) RUN apt-get update && apt-get install -y libzip-dev zip \ && docker-php-ext-configure zip \ && docker-php-ext-install zip #配置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 # 时区 RUN echo "Asia/Shanghai" >/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 # 清理缓存 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"]
这里面我安装了一些基本扩展,类似git、unzip、wget、vim、GD库、redis、composer,大家可以根据项目需要自己定制化安装。
三、执行构建命令
我们直接执行以下命令行进行镜像构建
docker build -t hongzhuangxian/php8.0_apache .
接下来就是等待安装即可。
这样我们就可以以此作为基础镜像将项目映射进去,进行开发。
0条评论