docker构建php7.4-apache镜像

docker构建php7.4-apache镜像

         今天接到一个商城项目需求,本来打算贪图方便,用前面自己已经打好的8.1镜像本地运行项目,结果发现提示报警,看了下原来是php版本太高,好吧,只能重新打一个低版本的镜像,看了下生产环境php版本用的是7.4,所以我也打个php7.4的镜像来部署。

         一、创建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:7.4-apache

# 设置时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# 更新软件源并安装基础工具
RUN apt-get update && apt-get install -y \
    libpng-dev \
    libjpeg-dev \
    libfreetype6-dev \
    git \
    wget \
    vim \
    unzip \
    && rm -rf /var/lib/apt/lists/*

# 配置 Apache
RUN a2enmod rewrite headers \
    && sed -i 's/AllowOverride None/AllowOverride All/g' /etc/apache2/apache2.conf \
    && echo "ServerName localhost" >> /etc/apache2/apache2.conf

# 安装 PHP 扩展 - 添加 mysqli
RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install -j$(nproc) gd pdo pdo_mysql mysqli bcmath

# 安装 Redis 扩展(使用 pecl)
RUN pecl install redis-5.3.7 \
    && docker-php-ext-enable redis

# 安装 Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \
    && composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

# 删除默认站点配置
RUN rm -f /etc/apache2/sites-enabled/000-default.conf

# 复制自定义配置
COPY 000-default.conf /etc/apache2/sites-available/
RUN ln -s /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-enabled/000-default.conf

# 设置工作目录
WORKDIR /var/www/html

# 设置权限(更好的做法)
RUN chown -R www-data:www-data /var/www/html \
    && chmod 755 /var/www/html

# 设置 Apache 启动用户
RUN usermod -u 1000 www-data || true
RUN groupmod -g 1000 www-data || true

# 暴露端口
EXPOSE 80

# 启动 Apache
CMD ["apache2-foreground"]

这里我暂时只是安装一些基础的php扩展,其他扩展等开发过程中发现缺了再重新打个包就行。

         三、执行构建命令

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

docker build -t hongzhuangxian/php7.4_apache .

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

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


0条评论

发表评论