500强网站建设,聊城pc网站建设软件,代理公司注册费用,企业网站 论文我花了大概一周的时间进行了各种踩坑及实验#xff0c;最终得出了一份可以使用的dockerfile及compose内含如下支持php7mysql_pdopostgre_pdophpredisswoole(可选#xff0c;如应用swoole#xff0c;dockerfile及nginx的配置会有所变化)dockerfile分为两部分#xff0c;一部…我花了大概一周的时间进行了各种踩坑及实验最终得出了一份可以使用的dockerfile及compose内含如下支持php7mysql_pdopostgre_pdophpredisswoole(可选如应用swooledockerfile及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_SWOOLEswoole-2.0.6ENV PHP_REDIS3.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 --repositoryhttp://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_pathinfo1/cgi.fix_pathinfo0/ /etc/php7/php.ini \sed -i s/;extensionphp_pgsql.dll/extensionphp_pgsql.dll/ /etc/php7/php.ini \sed -i s/;extensionphp_pdo_pgsql.dll/extensionphp_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-components1 \# 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的nginxnginx-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/localtimeCOPY 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: 2services:php-fpm:image: php-fpmrestart: always#日志系统可不写#logging:# driver: fluentd# options:# fluentd-address: logaddr:24224# tag: docker/{{.Name}}/{{.ID}}/{{.ImageName}}php-nginx:image: php-nginxdepends_on:#这几个\是转义字符 但是不知道为什么就显示出来了使用的时候自己去掉一下\- php-fpmports:\- 80:80links:\- php-fpmrestart: 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了