如何构建一个php7-alpine的docker镜像
发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,这篇文章主要介绍"如何构建一个php7-alpine的docker镜像",在日常操作中,相信很多人在如何构建一个php7-alpine的docker镜像问题上存在疑惑,小编查阅了各式资料,整理出简单好
千家信息网最后更新 2024年09月22日如何构建一个php7-alpine的docker镜像
这篇文章主要介绍"如何构建一个php7-alpine的docker镜像",在日常操作中,相信很多人在如何构建一个php7-alpine的docker镜像问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何构建一个php7-alpine的docker镜像"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
内含如下支持
php7
mysql_pdo
postgre_pdo
phpredis
swoole(可选,如应用swoole,dockerfile及nginx的配置会有所变化)
dockerfile分为两部分,一部分为php服务,一部分为nginx(swoole下可选)
先贴代码吧
### php7 ###
FROM php:7.2-rc-fpm-alpine3.6ENV TIMEZONE Asia/ShanghaiENV PHP_MEMORY_LIMIT 512MENV MAX_UPLOAD 50MENV PHP_MAX_FILE_UPLOAD 200ENV PHP_MAX_POST 100M## swoole版本,如需安装swoole则取消注释#ENV PHP_EXT_SWOOLE=swoole-2.0.6ENV PHP_REDIS=3.1.4#基础依赖RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories && \ apk update && \ apk add tzdata curl && \ cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime && \ echo "${TIMEZONE}" > /etc/timezone && \ apk --update --repository=http://dl-4.alpinelinux.org/alpine/edge/testing add \ php7-common php7-intl php7-gd php7-mcrypt php7-openssl \ php7-gmp php7-json php7-dom php7-pdo php7-zip \ php7-zlib php7-mysqli php7-bcmath php7-pdo_mysql php7-pgsql \ php7-pdo_pgsql php7-gettext php7-xmlreaderhp7-xmlrpc \ php7-bz2 php7-iconv php7-curl php7-ctype php7-fpm \ php7-mbstring php7-session php7-phar curl curl-dev postgresql-dev \ ## 如果使用swoole 需要取消下行注释 # hiredis-dev libmcrypt-dev gmp-dev icu-dev linux-headers musl --virtual .phpize-deps $PHPIZE_DEPS \ tzdata && \ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \ php composer-setup.php && \ php -r "unlink('composer-setup.php');" && \ mv composer.phar /usr/local/bin/composer && \ composer self-update && \ sed -i -e "s/;daemonize\s*=\s*yes/daemonize = no/g" /etc/php7/php-fpm.conf && \ sed -i -e "s/listen\s*=\s*127.0.0.1:9000/listen = 9000/g" /etc/php7/php-fpm.d/www.conf && \ sed -i "s|;date.timezone =.*|date.timezone = ${TIMEZONE}|" /etc/php7/php.ini && \ sed -i "s|memory_limit =.*|memory_limit = ${PHP_MEMORY_LIMIT}|" /etc/php7/php.ini && \ sed -i "s|upload_max_filesize =.*|upload_max_filesize = ${MAX_UPLOAD}|" /etc/php7/php.ini && \ sed -i "s|max_file_uploads =.*|max_file_uploads = ${PHP_MAX_FILE_UPLOAD}|" /etc/php7/php.ini && \ sed -i "s|post_max_size =.*|max_file_uploads = ${PHP_MAX_POST}|" /etc/php7/php.ini && \ sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php7/php.ini && \ sed -i "s/;extension=php_pgsql.dll/extension=php_pgsql.dll/" /etc/php7/php.ini && \ sed -i "s/;extension=php_pdo_pgsql.dll/extension=php_pdo_pgsql.dll/" /etc/php7/php.ini && \ mkdir -p /usr/src/php/ext/redis && \ curl -L https://github.com/phpredis/phpredis/archive/$PHP_REDIS.tar.gz | tar xvz -C /usr/src/php/ext/redis --strip 1 && \ echo 'redis' >> /usr/src/php-available-exts && \ docker-php-ext-install redis pgsql pdo pdo_mysql pdo_pgsql && \ rm -rf /var/cache/apk/*# 如需安装swoole,取消以下注释 #RUN \# cd /tmp \# && pecl download $PHP_EXT_SWOOLE \# && mkdir -p /tmp/$PHP_EXT_SWOOLE \# && tar -xf ${PHP_EXT_SWOOLE}.tgz -C /tmp/$PHP_EXT_SWOOLE --strip-components=1 \# && docker-php-ext-configure /tmp/$PHP_EXT_SWOOLE --enable-async-redis --enable-openssl --enable-sockets=/usr/local/include/php/ext/sockets \# && docker-php-ext-install /tmp/$PHP_EXT_SWOOLE \# && rm -rf /tmp/${PHP_EXT_SWOOLE}*WORKDIR /www# 放入自己需要的代码#COPY . /www# 安装composer依赖#RUN composer install# php-fpm使用以下配置EXPOSE 9000CMD ["php-fpm"]# swoole 使用以下配置EXPOSE 9501# 启动swoole serverCMD ["php","src/server","start"]
## swoole可以不依赖nginx 所以我单独贴出php-fpm的nginx
nginx-dockerfile:
from nginx:1.13.6-alpineENV TIME_ZONE Asiz/ShanghaiRUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories && \ apk update && \ apk add --no-cache tzdata && \ echo "${TIME_ZONE}" > /etc/timezone && \ ln -sf /usr/share/zoneinfo/${TIME_ZONE} /etc/localtime COPY default.conf /etc/nginx/conf.dEXPOSE 80STOPSIGNAL SIGTERMCMD ["nginx", "-g", "daemon off;"]
nginx_php-fpm:default.conf:
server { listen 80; server_name *.yourserver.com; location / { autoindex on; if ($request_filename !~* /(index\.php|assets|uploads|phpinfo\.php)) { rewrite ^/(.*)$ /index.php/$1 last; } } location ~ .php(/|$) { fastcgi_split_path_info ^(.+?\.php)(/.*)$; fastcgi_pass php-fpm:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /www$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; include fastcgi_params; } }
compose:
* swoole的编排模板很容易写 我就不在这里贴出了
version: '2'services: php-fpm: image: "php-fpm" restart: always #日志系统,可不写 #logging: # driver: fluentd # options: # fluentd-address: "logaddr:24224" # tag: "docker/{{.Name}}/{{.ID}}/{{.ImageName}}" php-nginx: image: "php-nginx" depends_on: #这几个\是转义字符 但是不知道为什么就显示出来了,使用的时候自己去掉一下 \- php-fpm ports: \- "80:80" links: \- php-fpm restart: always #日志系统,可不写 #logging: # driver: fluentd # options: # fluentd-address: "logaddr:24224" # tag: "docker/{{.Name}}/{{.ID}}/{{.ImageName}}"
我所做的是对php及nginx进行解耦
如果集群内有多个php服务需要互相访问,
因为compose不允许两个服务互相link
所以需要创建一个network在network中借助nginx进行互相访问
但是目前只有v3版的compose支持本功能,很多旧集群都无法正常支持本功能,所以我就不贴出代码了
编辑完成后,即可通过80端口访问index.php了
到此,关于"如何构建一个php7-alpine的docker镜像"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
镜像
学习
代码
注释
支持
服务
配置
可不
功能
日志
更多
系统
集群
帮助
实用
接下来
两个
只有
基础
多个
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
浙江软件开发驻场服务平台
中学生网络安全文件
石家庄政务类软件开发
数据库统一接口组件
怎么看服务器捐物资情况
安全的数据库客户端软件
服务器开机密码怎么换
贵州时代网络技术分类市场价
康定住宿软件开发
临沂软件开发方案
网安民警培训网络安全新闻稿
靠谱的生产管理软件开发定制
山西正规软件开发服务检测中心
如何获取股票数据库
服务器的串口重定向什么意思
北京分析软件开发商
塔式服务器连接方式
皓月云进不去服务器
软件数据库安全检测
git文件上传到服务器
数据库数据更新语句
辽宁省网络安全大讲堂体会
以月份分组查数据库
spl数据库是啥
正定信息化软件开发专业服务
芯片服务器好不好
华科网络安全学院怎样
村赞平台软件开发
通城数据库修复
少女前线所以服务器