mac下docker的docker.qcow2文件太大清理

Submitted by admin on Wed, 05/03/2017 - 13:36
cd ~/Library/Containers/com.docker.docker/Data/database
git reset --hard
echo true > disk/trim
##如果docker版本是17.03.1-ce-mac5 (16048),执行
##echo true > com.docker.driver.amd64-linux/disk/trim
git commit -a -m 'enable fstrim'
# 重启docker....
docker run --rm -it --privileged --pid=host walkerlee/nsenter -t 1 -m -u -i -n fstrim /var


上述命令执行后,空间释放出25G左右。


参考链接:

drupal cache 漫谈

Submitted by admin on Thu, 03/30/2017 - 04:15

最近对drupal cache使用比较多。使用过memcache/memcache_storage/redis模块用来做drupal 的cache。

对于多站点来说,要注意设置cache_prefix变量,否则容易引起cache的混乱。一般配置在settings.php

$conf['cache_prefix'] = 'your-cache-prefix';

该方法对memcache/memcache_storage/redis同样适用。

但是redis有特殊之处。就是如果不设置这个值,默认提供一个cache_prefix。这个prefix是根据数据库的链接的md5计算出来的。就是说如果适用redis作为cache层,可以不关注这个设定。但是为了使用的友好性,建议设定这个值。

redis如何设定cache_prefix代码参见如下链接。

通过docker-compose修改时区

Submitted by admin on Thu, 03/30/2017 - 02:53

docker 容器默认的时区如果需要修改,可以通过docker-compose.yml.


elastalert:
   image: ivankrizsan/elastalert:latest
   volumes:
       - ./ElastalertShared/logs:/opt/logs
       - ./ElastalertShared/rules:/opt/rules
   links:
       - elk_stack:elasticsearch_host
   environment:
       - SET_CONTAINER_TIMEZONE=true
       - CONTAINER_TIMEZONE=Europe/Stockholm
   stdin_open: false
   tty: false

centos 下修改docker网络配置

Submitted by admin on Sun, 03/12/2017 - 01:03

事情起因:

在为客户使用docker运行php-fpm的时候,发现有的可以正常连接服务器,有的不可以。经过诊断发现客户端的ip网段和docker创建的默认docker0网卡网段冲突。

docker0默认的网络一般都是172.17.0.1/24或192.168.0.1/24。如果客户端的ip是172.17.111.1,则这时候访问基于docker部署的应用的时候,会遇到网络问题。


解决的方案,有两种。

1:使用host模式运行docker,但是需要删除默认的docker0虚拟网卡。在下次docker daemon重新启动的时候,又会重新创建这个docker0的虚拟网卡。

2:另一种解决方式,就是修改默认的docker0网络配置,使用另外的网段给docker使用。


如下步骤,是基于方案二的解决步骤,亲测可行。

如何将MySQL datetime类型修改为timestamp

Submitted by admin on Wed, 12/28/2016 - 01:17
ALTER TABLE erp_diff_order ADD COLUMN created_date_tmp int(11) default 0;
UPDATE erp_diff_order SET created_date_tmp=UNIX_TIMESTAMP(created_date);
ALTER TABLE erp_diff_order DROP COLUMN created_date;
ALTER TABLE erp_diff_order ADD COLUMN created_date int(11) default 0;
UPDATE erp_diff_order SET created_date=created_date_tmp;
ALTER TABLE erp_diff_order DROP COLUMN created_date_tmp;


Drupal高可用坑之表单过期

Submitted by admin on Sat, 12/17/2016 - 17:24

在Drupal单站点,即一个web server(nginx或者apache),一个数据库,一个缓存服务器的架构下,绝大多数情况下都很完美。

但是对一些Drupal做了高可用,负载均衡等配置;会涉及到两台Web Server服务器,两台数据库服务器(Mysql的Master/Slave)等。这时候有些问题,就会暴露出某些问题。

这里列出遇到表单过期的问题问题,并分享解决方法。


因为服务器做了高可用,所以有两台Web Server服务器,上面安装了nginx+php-fpm。两台数据库服务器,做了主从配置。

https://www.drupal.org/node/2241311

php匿名函数+array_map获取entity list

Submitted by admin on Sun, 11/13/2016 - 13:14

Drupal下面获取entity machine name + entity label的key => value列表,一般会用foreach来获取。代码格式如下

$entity_info = entity_get_info();
$options = [];
foreach ($entity_info as $entity_type => $info) {
  $options[$entity_type] = $info['label'];
}

这样写固然无可厚非。但是这里介绍一种稍有逼格的写法,供读者开拓思路。

这里利用了array_map + 匿名函数的方式来执行。

$entity_info = entity_get_info();
$entity_options = array_map(function ($item) {
  return $item['label'];
}, $entity_info);

基于docker容器打印的9*9乘法表

Submitted by admin on Sat, 11/05/2016 - 10:45

闲来无事,折腾docker也是一种乐趣。

步骤相对简单,可以用来建立对docker使用的兴趣,或者用来作为docker感兴趣的入门材料也不错。

1:拉取php7的docker镜像

docker pull php:7.0-cli

2:在当前文件夹创建test.php,内容如下:

<?php
for ($i = 1; $i < 10; $i++) {
	for ($j = 1; $j <= $i; $j++) {
		printf ("%2d * %2d = %2d\t",$j, $i, $i*$j);
	}
	print "\n";
}

3:运行docker镜像

Tags

php小试题

Submitted by admin on Wed, 11/02/2016 - 19:53
$a1 = array("a" => "JAVA", "b" => "ASP");
$a2 = array("c" => "C", "b" => "PHP");
print_r(array_merge($a1, $a2));
print_r(array_merge($a2, $a1));
print_r($a1 + $a2);
print_r($a2 + $a1);