docker 容器默认的时区如果需要修改,可以通过docker-compose.yml.
centos 下修改docker网络配置
事情起因:
在为客户使用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
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高可用坑之表单过期
在Drupal单站点,即一个web server(nginx或者apache),一个数据库,一个缓存服务器的架构下,绝大多数情况下都很完美。
但是对一些Drupal做了高可用,负载均衡等配置;会涉及到两台Web Server服务器,两台数据库服务器(Mysql的Master/Slave)等。这时候有些问题,就会暴露出某些问题。
这里列出遇到表单过期的问题问题,并分享解决方法。
因为服务器做了高可用,所以有两台Web Server服务器,上面安装了nginx+php-fpm。两台数据库服务器,做了主从配置。
php匿名函数+array_map获取entity list
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 + 匿名函数的方式来执行。
基于docker的php调用基于docker的mysql数据库
自从接触docker以来,一直想实现这种玩法。如下是步骤
-
1:建立基于docker的mysql,参考文章
基于docker容器打印的9*9乘法表
闲来无事,折腾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镜像
php小试题
$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);Drupal db_transaction 使用范式
$transaction = isset($transaction) ? $transaction : db_transaction();
try {
$ids = array_keys($entities);
db_delete($this->entityInfo['base table'])
->condition($this->idKey, $ids, 'IN')
->execute();
if (isset($this->revisionTable)) {
db_delete($this->revisionTable)
->condition($this->idKey, $ids, 'IN')Mac上将brew安装的MySql改用Docker执行
docker是最近大热的技术,堪称技术界的网红。本着技术人折腾的本性,尝试将本地的MySql服务器改成用docker执行,本文记录折腾过程,以作备忘。
步骤如下:
1:安装docker
自己找文档去
2:使用mysql官方发布的docker image,命令如下
docker pull mysql/mysql-server:5.7.16 ##(这是本文发布时候MySql最新稳定版,并且最好和本地的Mysql版本一致,否则第三步可能会有问题。)
因为GFW的缘故,这个过程有点漫长。命令执行完之后,执行"docker images"看到有mysql-server字样即表示成功了。
3:运行docker images,有几个注意点
Glossary
- November 2026 (3)
- October 2026 (5)
- September 2026 (3)
- August 2026 (4)
- July 2026 (2)
- June 2026 (2)
- March 2023 (1)
- October 2022 (1)
- October 2021 (2)
- August 2021 (3)
- June 2021 (2)
- May 2021 (1)
- April 2021 (2)
- November 2020 (1)
- June 2020 (2)
- December 2019 (2)
- November 2019 (1)
- August 2019 (1)
- February 2018 (1)
- October 2017 (1)
- September 2017 (1)
- July 2017 (1)
- June 2017 (2)
- May 2017 (1)
- March 2017 (3)
- December 2016 (2)
- November 2016 (4)
- October 2016 (3)
- June 2016 (1)
- December 2015 (1)
- November 2015 (6)
- October 2015 (2)
- September 2015 (1)
- August 2015 (1)
- July 2015 (1)
- June 2015 (1)
- May 2015 (1)
- March 2015 (1)
- January 2015 (1)
- December 2014 (3)
- October 2014 (4)
- September 2014 (2)
- August 2014 (1)
- July 2014 (1)
- June 2014 (1)
- May 2014 (1)
- April 2014 (2)
- March 2014 (2)
- February 2014 (2)
- January 2014 (4)
- December 2013 (1)
- March 2013 (2)
- February 2013 (2)
- December 2012 (2)
- November 2012 (4)
- October 2012 (1)
- September 2012 (6)
- August 2012 (15)
- July 2012 (5)
- June 2012 (13)
- May 2012 (9)
- April 2012 (8)
- March 2012 (9)
- February 2012 (3)
- January 2012 (1)
- December 2011 (1)
- November 2011 (6)
- October 2011 (2)
- September 2011 (17)
- August 2011 (4)
- July 2011 (4)
- June 2011 (5)
- May 2011 (4)