Docker
docker构建php7.4-nginx镜像
docker构建php7.4-nginx镜像
最近有个项目是PHP7.4的项目,打算用Docker部署,所以打算自己构建一个PHP7.4-nginx的镜像,下面跟大家分享构建步骤
一、创建Nginx配置文件
我们在当前构建目录下创建一个文件default.conf,内容如下
server { listen 80; server_name localhost; root /var/www/html; index index.html index.htm index.nginx-debian.html; location / { try_files $uri $uri/ =404; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
二、创建测试文件
同样在当前构建目录下创建一个文件index.php,内容如下
<?php phpinfo();
三、创建启动命令文件
同样在当前构建目录下创建一个文件run.sh,我们让镜像默认启动PHP、Nginx、Crond(定时任务),这三个服务,这里说明下,为了以后我们可以将定时任务直接放到容器里跑,不用在宿主机跑,这里我们让crond默认启动,内容如下
#!/usr/bin/env sh set -e crond php-fpm -D nginx -g 'daemon off;'
四、创建构造文件
我们在当前构建目录下创建文件Dockerfile,内容如下
# Version 1.0 FROM php:7.4.26-fpm-alpine3.13 # 维护者信息 LABEL MAINTAINER="hzx790254812@gmail.com" # 时区 ENV TZ "Asia/Shanghai" RUN echo ${TZ} >/etc/timezone # 创建www用户 RUN addgroup -g 1000 -S www && adduser -s /sbin/nologin -S -D -u 1000 -G www www # 配置阿里云镜像源,加快构建速度。 #RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g" /etc/apk/repositories # PHPIZE_DEPS包含gcc g++等编译辅助类库,完成后删除;pecl安装扩展。 RUN apk update \ && apk add libstdc++ libzip-dev vim #安装Redis扩展 RUN apk add --no-cache --virtual .build-deps $PHPIZE_DEPS \ && apk add --no-cache zlib-dev \ && docker-php-source extract \ && curl -L -o /tmp/redis.tar.gz https://github.com/phpredis/phpredis/archive/5.3.4.tar.gz \ && tar xfz /tmp/redis.tar.gz \ && rm -r /tmp/redis.tar.gz \ && mv phpredis-5.3.4 /usr/src/php/ext/redis \ && docker-php-ext-install redis \ && docker-php-source delete \ && apk del .build-deps #安装Zip扩展 RUN apk add --no-cache --virtual .build-deps zlib-dev libzip-dev \ && docker-php-ext-install zip \ && apk del .build-deps #安装GD扩展 RUN apk add --no-cache freetype-dev libjpeg-turbo-dev libpng-dev \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install gd # docker-php-ext-install安装扩展。 RUN apk update \ && apk add --no-cache nginx freetype libpng libjpeg-turbo freetype-dev libpng-dev libjpeg-turbo-dev \ && docker-php-ext-install -j$(nproc) pdo_mysql opcache bcmath mysqli # 安装Compose 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 # 安装git RUN apk add git # Nginx配置 COPY default.conf /etc/nginx/http.d/ COPY index.php /var/www/html # 在run.sh COPY run.sh /run.sh RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" && mkdir -p /run/nginx/ && chmod +x /run.sh # 执行run.sh ENTRYPOINT ["/run.sh"] # 暴露端口 EXPOSE 80
我们直接拿一个PHP7.4做基础镜像,安装Nginx以及Composer
五、构建镜像
我们通过以下命令进行构建
docker build -t hongzhuangxian/php7.4_nginx .
等待构建完成即可,为了方便使用,我们可以将他push到镜像仓库,我这里是放在阿里云镜像仓库。
0条评论