构建php7.2-apache镜像

构建php7.2-apache镜像

      最近入职了一家新的公司,项目用的是tp6.0,本地开发环境用docker,于是打算根据项目情况打包一个php7.2-apache版本的镜像方便自己使用,我们先创建一个apache网站配置,来配置我们的项目,命名为000-default.conf,配置如下

<VirtualHost *:80>
   ServerAdmin  localhost
   DocumentRoot /var/www/html
   <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>

为什么要弄这一个配置,主要方便访问路由隐藏index.php。

       下面我们创建一个文件名为Dockerfile,主要用来构建打包镜像,构建如下

# Version 1.0

FROM php:7.2-apache
# 维护者信息
MAINTAINER hzx790254812@gmail.com
# 更新软件源
RUN apt-get update

#配置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 TZ "Asia/Shanghai"
RUN echo ${TZ} >/etc/timezone

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

# 安装GD扩展
RUN apt-get update && \
    apt-get install -y libpng-dev libjpeg-dev && \
    docker-php-ext-configure gd --with-jpeg-dir=/usr/include/ && \
    docker-php-ext-install gd

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

# 安装Git
RUN apt-get update && apt-get install -y git

# 安装composer
RUN php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
RUN php composer-setup.php
RUN php -r "unlink('composer-setup.php');"
RUN mv composer.phar /usr/local/bin/composer

# 安装wget
RUN apt-get install -y wget

# 安装vi
RUN apt-get install -y vim

# 安装Redis服务
RUN 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"]

基本就是安装扩展以及覆盖原有网站配置。

        然后我们在该目录下运行以下命令进行镜像构建打包

docker build -t hongzhuangxian/php7.2-apache .

我们等他构建完成就可以,这样就完成了一个新的php7.2-apache镜像。

       部署配置文件(docker-compose.yml),我们可以这样写

version: "3"
services:
  cms_sc:
    image: hongzhuangxian/php7.2-apache
    container_name: docker_cms_sc_compose
    restart: always
    ports:
    - 8080:80
    volumes:
    - /E/word/cms_sc:/var/www/html/

输入以下命令进行部署

docker-compose up -d

      今天就跟大家分享到这。

0条评论

发表评论