rabin 7 years ago
parent
commit
3ea94baa64
37 changed files with 94 additions and 133 deletions
  1. 10 5
      README.md
  2. 4 4
      container/conf/web/nginx/conf.d/site.conf
  3. 0 1
      container/conf/web/php/conf.d/memcache.ini
  4. 0 1
      container/conf/web/php/conf.d/mongodb.ini
  5. 0 1
      container/conf/web/php/conf.d/redis.ini
  6. 0 0
      container/conf/web/php5/conf.d/curl.ini
  7. 0 0
      container/conf/web/php5/conf.d/dom.ini
  8. 0 0
      container/conf/web/php5/conf.d/gd.ini
  9. 0 0
      container/conf/web/php5/conf.d/iconv.ini
  10. 0 0
      container/conf/web/php5/conf.d/json.ini
  11. 0 0
      container/conf/web/php5/conf.d/mcrypt.ini
  12. 0 0
      container/conf/web/php5/conf.d/mosquitto.ini
  13. 0 0
      container/conf/web/php5/conf.d/mysql.ini
  14. 0 0
      container/conf/web/php5/conf.d/openssl.ini
  15. 0 0
      container/conf/web/php5/conf.d/pdo.ini
  16. 0 0
      container/conf/web/php5/conf.d/pdo_mysql.ini
  17. 0 0
      container/conf/web/php5/conf.d/phar.ini
  18. 0 0
      container/conf/web/php5/conf.d/xml.ini
  19. 0 0
      container/conf/web/php5/conf.d/zip.ini
  20. 0 0
      container/conf/web/php5/conf.d/zlib.ini
  21. 0 0
      container/conf/web/php5/php-fpm.conf
  22. 0 0
      container/conf/web/php5/php.ini
  23. 1 0
      container/conf/web/php7/conf.d/10_redis.ini
  24. 0 1
      container/conf/web/php7/conf.d/20_memcached.ini
  25. 0 40
      src/docker/build/dev/php/Dockerfile
  26. 0 16
      src/docker/build/dev/php/base/Dockerfile
  27. 0 17
      src/docker/build/dev/php/libevent/Dockerfile
  28. 1 1
      src/docker/build/dev/php/mosquitto/Dockerfile
  29. 0 16
      src/docker/build/dev/php/swoole/Dockerfile
  30. 44 0
      src/docker/build/dev/php/v5/Dockerfile
  31. 4 4
      src/docker/build/dev/php/v5/install.sh
  32. 0 0
      src/docker/build/dev/php/v5/php.sh
  33. 3 1
      src/docker/build/dev/php/v7/Dockerfile
  34. 4 4
      src/docker/build/dev/php/v7/install.sh
  35. 10 12
      src/docker/conf/web.conf
  36. 1 4
      src/docker/core.conf
  37. 12 5
      src/tool/php.py

+ 10 - 5
README.md

@@ -127,24 +127,29 @@ ip:9030/dweb 是离线下载
 </pre>
 
 <pre>
-2017-12-15更新:
+2017-12-15更新(重要!)
 删除use功能。以不同的命令替代:
 
 1、使用docker:
 dm run web-php
 
-2、使用php
+2、安装php扩展
 dp install libevent 安装libevent扩展
 dp install swoole 安装swoole扩展
-自带的php5.6和php7已经默认支持redis、memcached扩展,无需安装
+dp install redis
+dp install memcached
+dp install mongo
+dp show 查看当前可以安装的扩展
+自带的php5.6和php7已经删除redis、mongo等扩展,请在需要时自行安装。
 后续我会按照http://pecl.php.net/packages.php增加一些常用的扩展。
 你也可以现在自行实现扩展的安装:
-phpInstall swoole-2.0.10 libevent-dev,libaio-dev,libmnl-dev swoole
+phpInstall swoole-2.0.10 swoole libevent-dev,libaio-dev,libmnl-dev
 说明:
 phpInstall 为固定指令
 swoole-2.0.10 为在pecl.php.net中的扩展名和版本号
-libevent-dev,libaio-dev,libmnl-dev 为依赖,多个用逗号隔开
 swoole 为生成的so名称
+libevent-dev,libaio-dev,libmnl-dev 为依赖,多个用逗号隔开
+
 
 
 3、使用composer:

+ 4 - 4
container/conf/web/nginx/conf.d/site.conf

@@ -27,10 +27,10 @@ server {
         fastcgi_split_path_info ^(.+\.php)(/.+)$;
         # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
 
-        # With php5-cgi alone:
-        fastcgi_pass web-php:9000;
-        # With php5-fpm:
-        #fastcgi_pass unix:/var/run/php5-fpm.sock;
+        # With php-cgi alone:
+        fastcgi_pass web-php7:9000;
+        # With php-fpm:
+        #fastcgi_pass unix:/var/run/php7-fpm.sock;
         fastcgi_index index.php;
         fastcgi_param  SCRIPT_FILENAME  $rootdir/$fastcgi_script_name;
         include fastcgi_params;

+ 0 - 1
container/conf/web/php/conf.d/memcache.ini

@@ -1 +0,0 @@
-extension=memcache.so

+ 0 - 1
container/conf/web/php/conf.d/mongodb.ini

@@ -1 +0,0 @@
-;extension=mongo.so

+ 0 - 1
container/conf/web/php/conf.d/redis.ini

@@ -1 +0,0 @@
-;extension=redis.so

+ 0 - 0
container/conf/web/php/conf.d/curl.ini → container/conf/web/php5/conf.d/curl.ini


+ 0 - 0
container/conf/web/php/conf.d/dom.ini → container/conf/web/php5/conf.d/dom.ini


+ 0 - 0
container/conf/web/php/conf.d/gd.ini → container/conf/web/php5/conf.d/gd.ini


+ 0 - 0
container/conf/web/php/conf.d/iconv.ini → container/conf/web/php5/conf.d/iconv.ini


+ 0 - 0
container/conf/web/php/conf.d/json.ini → container/conf/web/php5/conf.d/json.ini


+ 0 - 0
container/conf/web/php/conf.d/mcrypt.ini → container/conf/web/php5/conf.d/mcrypt.ini


+ 0 - 0
container/conf/web/php/conf.d/mosquitto.ini → container/conf/web/php5/conf.d/mosquitto.ini


+ 0 - 0
container/conf/web/php/conf.d/mysql.ini → container/conf/web/php5/conf.d/mysql.ini


+ 0 - 0
container/conf/web/php/conf.d/openssl.ini → container/conf/web/php5/conf.d/openssl.ini


+ 0 - 0
container/conf/web/php/conf.d/pdo.ini → container/conf/web/php5/conf.d/pdo.ini


+ 0 - 0
container/conf/web/php/conf.d/pdo_mysql.ini → container/conf/web/php5/conf.d/pdo_mysql.ini


+ 0 - 0
container/conf/web/php/conf.d/phar.ini → container/conf/web/php5/conf.d/phar.ini


+ 0 - 0
container/conf/web/php/conf.d/xml.ini → container/conf/web/php5/conf.d/xml.ini


+ 0 - 0
container/conf/web/php/conf.d/zip.ini → container/conf/web/php5/conf.d/zip.ini


+ 0 - 0
container/conf/web/php/conf.d/zlib.ini → container/conf/web/php5/conf.d/zlib.ini


+ 0 - 0
container/conf/web/php/php-fpm.conf → container/conf/web/php5/php-fpm.conf


+ 0 - 0
container/conf/web/php/php.ini → container/conf/web/php5/php.ini


+ 1 - 0
container/conf/web/php7/conf.d/10_redis.ini

@@ -0,0 +1 @@
+extension=redis.so

+ 0 - 1
container/conf/web/php7/conf.d/20_memcached.ini

@@ -1 +0,0 @@
-extension=memcached.so

+ 0 - 40
src/docker/build/dev/php/Dockerfile

@@ -1,40 +0,0 @@
-FROM docker.dever.cc/dev/php/base:latest
-
-MAINTAINER Rabin "https://github.com/shemic"
-
-RUN apk add --no-cache --update php5-dev m4 autoconf gcc g++ make openssl-dev curl && \
-	cd /tmp && \
-	curl -O http://www.dever.cc/file/php/php-mongo-1.6.14.tgz && \
-	tar -xzvf php-mongo-1.6.14.tgz && \
-	cd mongo-1.6.14 && \
-	phpize && \
-	./configure --with-php-config=/usr/bin/php-config && \
-	make && \
-	make install && \
-	cd .. && \
-	curl -O http://www.dever.cc/file/php/php-redis-3.1.2.tgz && \
-	tar -xzvf php-redis-3.1.2.tgz && \
-	cd redis-3.1.2 && \
-	phpize && \
-	./configure --with-php-config=/usr/bin/php-config && \
-	make && \
-	make install && \
-	cd .. && \
-
-	#curl -O https://launchpadlibrarian.net/165454254/libmemcached-1.0.18.tar.gz && \
-	#tar -xzvf libmemcached-1.0.18.tar.gz && \
-	#cd libmemcached-1.0.18 && \
-	#./configure --prefix=/usr/local/libmemcached --with-memcached && \
-	#make && make install && \
-	#cd .. && \
-	#curl -O http://pecl.php.net/get/memcached-3.0.3.tgz && \
-	#tar -xzvf memcached-3.0.3.tgz && \
-	#cd memcached-3.0.3 && \
-	#phpize && \
-	#./configure --with-php-config=/usr/bin/php-config && \
-	#make && \
-	#make install && \
-	#cd .. && \
-
-	apk del php5-dev m4 autoconf gcc g++ make openssl-dev curl git && \
-	rm -rf /tmp/* /var/cache/apk/*

+ 0 - 16
src/docker/build/dev/php/base/Dockerfile

@@ -1,16 +0,0 @@
-FROM docker.dever.cc/os/alpine/v3.4:latest
-
-MAINTAINER Rabin "https://github.com/shemic"
-
-ENV COMPOSER_HOME=/share/lib/php
-
-RUN apk add --no-cache --update curl php5-fpm php5-pear php5-mysql php5-pgsql php5-pdo_mysql php5-pdo_pgsql php5-gd php5-curl php5-mcrypt php5-json php5-zlib php5-xml php5-iconv php5-zip php5-phar php5-memcache php5-openssl php5-dom php5-mbstring && curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/bin/composer && apk del curl && composer config -g repo.packagist composer https://packagist.phpcomposer.com
-
-COPY php.sh /entrypoint/php.sh
-COPY install.sh /install.sh
-
-VOLUME ["/www", "/etc/php5"]
-
-EXPOSE 9000
-
-CMD ["php"]

+ 0 - 17
src/docker/build/dev/php/libevent/Dockerfile

@@ -1,17 +0,0 @@
-FROM docker.dever.cc/dev/php/v7:latest
-
-MAINTAINER Rabin "https://github.com/shemic"
-
-RUN apk add --no-cache --update php7-dev m4 autoconf gcc g++ make openssl-dev curl && \
-	cd /tmp && \
-	curl -O http://pecl.php.net/get/event-2.3.0.tgz && \
-	tar -xzvf event-2.3.0.tgz && \
-	cd event-2.3.0 && \
-	phpize && \
-	./configure --with-php-config=/usr/bin/php-config && \
-	make && \
-	make install && \
-	cd .. && \
-
-	apk del php7-dev m4 autoconf gcc g++ make openssl-dev curl && \
-	rm -rf /tmp/* /var/cache/apk/*

+ 1 - 1
src/docker/build/dev/php/mosquitto/Dockerfile

@@ -1,4 +1,4 @@
-FROM docker.dever.cc/dev/php:latest
+FROM docker.dever.cc/dev/php/v5:latest
 
 MAINTAINER Rabin "https://github.com/shemic"
 

+ 0 - 16
src/docker/build/dev/php/swoole/Dockerfile

@@ -1,16 +0,0 @@
-FROM docker.dever.cc/dev/php/v7:latest
-
-MAINTAINER Rabin "https://github.com/shemic"
-
-RUN apk add --no-cache --update libaio-dev php7-dev autoconf gcc g++ make openssl-dev curl git && \
-	cd /tmp && \
-	#git clone https://github.com/swoole/swoole-src.git && \
-	git clone https://gitee.com/swoole/swoole swoole-src && \
-	cd swoole-src && \
-	phpize && \
-	./configure --with-php-config=/usr/bin/php-config --enable-coroutine && \
-	make && \
-	make install && \
-	cd .. && rm -rf swoole-src && \
-	apk del php7-dev m4 autoconf gcc g++ make openssl-dev curl git && \
-	rm -rf /tmp/* /var/cache/apk/*

+ 44 - 0
src/docker/build/dev/php/v5/Dockerfile

@@ -0,0 +1,44 @@
+FROM docker.dever.cc/os/alpine/v3.4:latest
+
+MAINTAINER Rabin "https://github.com/shemic"
+
+ENV COMPOSER_HOME=/share/lib/php
+
+RUN apk add --no-cache --update curl php5-fpm php5-pear php5-mysql php5-pgsql php5-pdo_mysql php5-pdo_pgsql php5-gd php5-curl php5-mcrypt php5-json php5-zlib php5-xml php5-iconv php5-zip php5-phar php5-openssl php5-dom && curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/bin/composer && apk del curl && composer config -g repo.packagist composer https://packagist.phpcomposer.com
+	# && apk add --no-cache --update php5-dev m4 autoconf gcc g++ make openssl-dev curl && \
+	#cd /tmp && \
+	#curl -O http://www.dever.cc/file/php/php-redis-3.1.2.tgz && \
+	#tar -xzvf php-redis-3.1.2.tgz && \
+	#cd redis-3.1.2 && \
+	#phpize && \
+	#./configure --with-php-config=/usr/bin/php-config && \
+	#make && \
+	#make install && \
+	#cd .. && \
+
+	#curl -O https://launchpadlibrarian.net/165454254/libmemcached-1.0.18.tar.gz && \
+	#tar -xzvf libmemcached-1.0.18.tar.gz && \
+	#cd libmemcached-1.0.18 && \
+	#./configure --prefix=/usr/local/libmemcached --with-memcached && \
+	#make && make install && \
+	#cd .. && \
+	#curl -O http://pecl.php.net/get/memcached-3.0.3.tgz && \
+	#tar -xzvf memcached-3.0.3.tgz && \
+	#cd memcached-3.0.3 && \
+	#phpize && \
+	#./configure --with-php-config=/usr/bin/php-config && \
+	#make && \
+	#make install && \
+	#cd .. && \
+
+	#apk del php5-dev m4 autoconf gcc g++ make openssl-dev curl git && \
+	#rm -rf /tmp/* /var/cache/apk/*
+
+COPY php.sh /entrypoint/php.sh
+COPY install.sh /install.sh
+
+VOLUME ["/www", "/etc/php5"]
+
+EXPOSE 9000
+
+CMD ["php"]

+ 4 - 4
src/docker/build/dev/php/base/install.sh → src/docker/build/dev/php/v5/install.sh

@@ -2,18 +2,18 @@
 set -e
 lib="php5-dev m4 autoconf gcc g++ make openssl-dev curl"
 apk add --no-cache --update $lib
-if [ -n "$2" ];then
-	rely=$2
+if [ -n "$3" ];then
+	rely=$3
     apk add --no-cache --update ${rely//,/" "}
 fi
 curl -O http://pecl.php.net/get/$1.tgz
 tar -xzvf $1.tgz
 cd $1
 phpize
-./configure --with-php-config=/usr/bin/php-config
+./configure --with-php-config=/usr/bin/php-config $4
 make
 make install
-echo extension=$3.so > /etc/php7/conf.d/$3.ini
+echo extension=$2.so > /etc/php7/conf.d/$2.ini
 killall php-fpm
 php-fpm
 #apk del $lib

+ 0 - 0
src/docker/build/dev/php/base/php.sh → src/docker/build/dev/php/v5/php.sh


+ 3 - 1
src/docker/build/dev/php/v7/Dockerfile

@@ -4,7 +4,9 @@ MAINTAINER Rabin "https://github.com/shemic"
 
 ENV COMPOSER_HOME=/share/lib/php
 
-RUN apk add --no-cache --update curl php7-fpm php7-pear php7-mysqli php7-session php7-pgsql php7-pdo_mysql php7-pdo_pgsql php7-gd php7-curl php7-mcrypt php7-json php7-zlib php7-xml php7-iconv php7-zip php7-phar php7-memcached php7-openssl php7-dom php7-redis php7-mbstring php7-simplexml && curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/bin/composer && apk del curl && composer config -g repo.packagist composer https://packagist.phpcomposer.com
+RUN apk add --no-cache --update curl php7-fpm php7-pear php7-mysqli php7-session php7-pgsql php7-pdo_mysql php7-pdo_pgsql php7-gd php7-curl php7-mcrypt php7-json php7-zlib php7-xml php7-iconv php7-zip php7-phar  php7-openssl php7-dom php7-mbstring php7-simplexml && curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/bin/composer && apk del curl && composer config -g repo.packagist composer https://packagist.phpcomposer.com
+
+#php7-memcached php7-redis 
 
 COPY php.sh /entrypoint/php.sh
 COPY install.sh /install.sh

+ 4 - 4
src/docker/build/dev/php/v7/install.sh

@@ -2,18 +2,18 @@
 set -e
 lib="php7-dev m4 autoconf gcc g++ make openssl-dev curl"
 apk add --no-cache --update $lib
-if [ -n "$2" ];then
-	rely=$2
+if [ -n "$3" ];then
+	rely=$3
     apk add --no-cache --update ${rely//,/" "}
 fi
 curl -O http://pecl.php.net/get/$1.tgz
 tar -xzvf $1.tgz
 cd $1
 phpize
-./configure --with-php-config=/usr/bin/php-config
+./configure --with-php-config=/usr/bin/php-config $4
 make
 make install
-echo extension=$3.so > /etc/php7/conf.d/10_$3.ini
+echo extension=$2.so > /etc/php7/conf.d/10_$2.ini
 killall php-fpm7
 php-fpm7
 #apk del $lib

+ 10 - 12
src/docker/conf/web.conf

@@ -13,23 +13,20 @@ port = 3309:3306
 volumes = {container}conf/db/mariadb:/etc/mysql,/mysql/{name}/data:/var/lib/mysql
 environment = MYSQL_ROOT_PASSWORD=123456
 
-[#php]
-port = 8082:8080
-link = [mysql]{num}:[mysql]{num}
-volumes_from = [mysql]{num}
-volumes = {container}web:/www,{container}conf/web/php:/etc/php5
+[#php5]
+image = php5
+#port = 8081:8080
+#link和from由于network的存在,已经不需要了
+#link = [mysql]{num}:[mysql]{num}
+#volumes_from = [mysql]{num}
+volumes = {container}web:/www,{container}conf/web/php5:/etc/php5
 #host = test:127.0.0.1,test1:127.0.0.1
 # 容器里对宿主机提供的指令的别名,可以直接用php -i访问容器中的php命令了
 alias = php,composer,pecl,apk,/install.sh->phpInstall
 
-[php]
-image = php7
-port = 8082:8080
-link = [mysql]{num}:[mysql]{num}
-volumes_from = [mysql]{num}
+[php7]
+#port = 8082:8080
 volumes = {container}web:/www,{container}conf/web/php7:/etc/php7
-#host = test:127.0.0.1,test1:127.0.0.1
-# 容器里对宿主机提供的指令的别名,可以直接用php -i访问容器中的php命令了
 alias = php,composer,pecl,apk,/install.sh->phpInstall
 
 [nginx]
@@ -37,6 +34,7 @@ port = 80:80,443:443
 volumes = {container}web:/www,{container}conf/web/nginx:/etc/nginx,{container}logs/nginx/{name}/logs:/var/log/nginx
 
 [#nginx]
+#使用openresty来代替nginx,可以写lua脚本了
 image = openresty
 port = 80:80,443:443
 volumes = {container}web:/www,{container}conf/web/nginx:/usr/local/openresty/nginx/conf,{container}logs/nginx/openresty_{name}/logs:/var/log/nginx

+ 1 - 4
src/docker/core.conf

@@ -12,11 +12,8 @@ alpine_glibc		= os/alpine/glibc
 ;ubuntu				= os/ubuntu
 
 ;dev
-php_base			= dev/php/base
-php					= dev/php
-php_libevent		= dev/php/libevent
+php5				= dev/php/v5
 php7				= dev/php/v7
-swoole				= dev/php/swoole
 java				= dev/java
 java_base			= java/base
 maven				= java/maven

+ 12 - 5
src/tool/php.py

@@ -15,9 +15,12 @@ class Php(object):
 
 class Php_Action(object):
 	package = {
-		# 名称-版本号,依赖包
-		'libevent' : ['event-2.3.0', 'libevent-dev', 'event']
-		,'swoole' : ['swoole-2.0.10', 'libevent-dev,libaio-dev,libmnl-dev', 'swoole']
+		# 名称-版本号,so名,依赖包,configure参数
+		'libevent' : ['event-2.3.0', 'event', 'libevent-dev', '']
+		,'swoole' : ['swoole-2.0.10', 'swoole', 'libevent-dev,libaio-dev,libmnl-dev', '']
+		,'mongo' : ['mongodb-1.3.4', 'mongodb', '', '']
+		,'redis' : ['redis-3.1.5RC2', 'redis', '', '']
+		,'memcached' : ['memcached-3.0.4', 'memcached', 'libmemcached-dev', '--disable-memcached-sasl']
 	}
 
 	@classmethod
@@ -26,10 +29,14 @@ class Php_Action(object):
 			name = self.package[Args.name][0]
 			rely = self.package[Args.name][1]
 			so = self.package[Args.name][2]
+			config = self.package[Args.name][2]
 		else:
 			print Args.name+' error'
 			return
 
-		Core.popen('phpInstall ' + name + ' ' + rely + ' ' + so, True)
+		Core.popen('phpInstall ' + name + ' ' + rely + ' ' + so + ' ' + config, True)
 		print 'install '+Args.name+':yes'
-		
+		
+	@classmethod
+	def show(self):
+		print self.package.keys()