-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
9a8e9de
commit 76eaa28
Showing
179 changed files
with
22,217 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
sudo: false | ||
language: go | ||
git: | ||
depth: 1 | ||
install: go get -v github.com/gohugoio/hugo | ||
script: | ||
‐ hugo | ||
deploy: | ||
provider: pages | ||
skip_cleanup: true | ||
github_token: $hexoCI | ||
on: | ||
branch: hugo | ||
local_dir: public | ||
repo: leongravel/blog | ||
fqdn: <custom-domain-if-needed> | ||
target_branch: master | ||
email: la9249@163.com | ||
name: leonGravel |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
--- | ||
title: Dubbo在Docker中的服务注册 | ||
categories: Java | ||
tags: [docker,dubbo] | ||
date: 2018-09-28 23:01:41 | ||
author: gravel | ||
--- | ||
今天在部署的时候,发现服务提供者启动成功,但是消费者没法拿到服务。查了下发现是服务提供者没注册成功。 | ||
|
||
<!--more--> | ||
|
||
### 问题分析 | ||
当docker容器部署dubbo提供者和常规部署应用混合使用一套zookeeper时,将出现Docker容器中的dubbo提供者向zookeeper注册容器IP导致常规部署应用无法访问容器IP而失败。 | ||
### 解决方案 | ||
在github上查的时候,发现有人提出了这个[问题][1],官方回复是将在2.5.7的版本中解决。 | ||
Dubbo在启动阶段提供两对系统属性,用于设置外部通信的IP和端口地址。 | ||
* DUBBO_IP_TO_REGISTRY --- 注册到注册中心的IP地址 | ||
* DUBBO_PORT_TO_REGISTRY --- 注册到注册中心的端口 | ||
* DUBBO_IP_TO_BIND --- 监听IP地址 | ||
* DUBBO_PORT_TO_BIND --- 监听端口 | ||
|
||
我将启动命令改为如下格式: | ||
``` | ||
docker run -d \ | ||
--name <containerName> \ | ||
--net dubbo \ | ||
-e DUBBO_IP_TO_REGISTRY=<ip> \ | ||
-e DUBBO_PORT_TO_REGISTRY=<port> \ | ||
-p <ip>:<port>:<port> \ | ||
-v dubbo:/log \ | ||
--restart=always \ | ||
<imageName> | ||
``` | ||
|
||
问题得到解决! | ||
|
||
[1]: https://github.com/apache/incubator-dubbo/issues/668 |
177 changes: 177 additions & 0 deletions
177
content/posts/GitlabRunner+docker实现自动打包镜像push到公司镜像仓库.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,177 @@ | ||
--- | ||
title: gitlab runner + docker 自动构建 | ||
categories: Docker | ||
tags: [docker,gitlab-CI] | ||
date: 2018-09-11 23:01:41 | ||
author: gravel | ||
--- | ||
|
||
最开始的时候,我尝试Jenkins+docker,可是Jenkins的docker依赖和插件,实在太过麻烦,配置项等等,太重。所以我转为使用gitlab runner来实现自动构建并打包镜像。 | ||
|
||
<!--more--> | ||
|
||
## 准备工作 | ||
* 安装docker | ||
* 在docker同一个机器上安装gitlab runner | ||
* 配置.gitlab-ci.yml | ||
|
||
### 安装Docker | ||
参考官方文档,唯一需要注意的是,需要将镜像仓库地址修改为私有的地址。可以通过配置Deamon.json实现。具体配置如下。 | ||
`registry-mirrors`代表私有仓库地址,`insecure-registries`的作用是,push指向的地址。 | ||
> Docker自从1.3.X之后docker registry交互默认使用的是HTTPS,所以这里最好直接指定仓库地址,不然push的时候会报错。 | ||
|
||
``` | ||
{ | ||
"registry-mirrors": [ | ||
"http://registry.******.com:5000" | ||
], | ||
"insecure-registries": [ | ||
"registry.******.com:5000" | ||
], | ||
"debug": true, | ||
"experimental": false | ||
} | ||
``` | ||
### 安装gitlab runner | ||
服务器是centos 7,以下的步骤都是基于centos 7 | ||
#### 下载二进制安装文件 | ||
``` | ||
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash | ||
``` | ||
|
||
#### 安装 | ||
``` | ||
sudo yum install gitlab-runner | ||
``` | ||
|
||
#### 注册Runner | ||
``` | ||
sudo gitlab-runner register | ||
``` | ||
|
||
1. 填入填入私有gitlab的url | ||
``` | ||
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com ) | ||
https://gitlab.******.com | ||
``` | ||
|
||
2. 输入项目的gitlab token | ||
``` | ||
Please enter the gitlab-ci token for this runner | ||
xxx | ||
``` | ||
|
||
3. 添加runner描述 | ||
``` | ||
Please enter the gitlab-ci description for this runner | ||
jiedu-ci | ||
``` | ||
4. 添加描述标签,若添加多个需用逗号隔开 | ||
``` | ||
Please enter the gitlab-ci tags for this runner (comma separated): | ||
ci,shws,jiedu | ||
``` | ||
|
||
5. 选择runner 运行模式 | ||
这里我选择的Docker,因为我们要使用docker 镜像以及一些其他的镜像 | ||
|
||
>其他的我也不是很了解 | ||
``` | ||
Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell: | ||
docker | ||
``` | ||
6. 设置基础镜像 | ||
``` | ||
Please enter the Docker image (eg. ruby:2.1): | ||
registry.******.com:5000/dzjz/ci/maven | ||
``` | ||
|
||
#### 配置gitlab runner | ||
``` | ||
vi /etc/gitlab-runner/config.toml | ||
``` | ||
写入 | ||
``` | ||
concurrent = 1 | ||
check_interval = 0 | ||
environment = ["MAVEN_HOME=/path/to/maven"] | ||
[[runners]] | ||
name = "shws-ci" | ||
url = "http://gitlab.******.com" | ||
token = "234234*******************" | ||
executor = "docker" | ||
output_limit = 208192 | ||
[runners.docker] | ||
tls_verify = false | ||
image = "registry.******.com:5000/dzjz/ci/maven" | ||
privileged = true | ||
cache_dir = "cache" | ||
disable_cache = false | ||
volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache","/root/.m2:/root/.m2"] | ||
shm_size = 0 | ||
pull_policy = "if-not-present" | ||
[runners.cache] | ||
``` | ||
当然这个部分后期会进一步完善修改,目前只是一个示例。 | ||
|
||
### 配置.gitlab-ci.yml | ||
这一部分,具体可以参考官方文档以及[这篇](https://segmentfault.com/a/1190000011890710),项目的配置如下: | ||
``` | ||
# 定义stages | ||
stages: | ||
- build | ||
- push | ||
# 构建各个依赖组件的jar包,并复制Dockerfile对应位置等待构建. | ||
build-job: | ||
# image: registry.******.com:5000/dzjz/ci/maven | ||
stage: build | ||
only: | ||
- feature/20180428-1.0.0.0script1-第二版 | ||
script: | ||
- mkdir -p jd-ci/shws/kf | ||
- cd shws/ && pwd | ||
- mvn clean install -U | ||
- echo '准备发布生活卫生镜像到私有镜像仓库!' | ||
- rm -rf src/dockerfile/*.war | ||
- cd .. && pwd | ||
- cp -r shws/target/shws.war shws/src/dockerfile/Dockerfile jd-ci/shws/kf | ||
- cd jd-ci/shws/kf/ && ls | ||
## 下面这个配置的作用是在不同的job间传递共享war包以及Dockerfile | ||
artifacts: | ||
name: "${CI_REGISTRY_IMAGE}:${CI_COMMIT_REF_SLUG}" | ||
paths: | ||
- jd-ci/shws/kf/* | ||
expire_in: 1 day | ||
push-job: | ||
stage: push | ||
only: | ||
- feature/20180428-1.0.0.0script1-第二版 | ||
image: registry.******.com:5000/docker:latest | ||
services: | ||
- registry.******.com:5000/docker:dind | ||
before_script: | ||
- docker info | ||
script: | ||
- echo '准备构建镜像并push到私有仓库' | ||
#- cd ./jd/shws/kf/ && ls | ||
- docker stop shws-kf || true | ||
- docker rm -f shws-kf || true | ||
- docker rmi registry.******.com:5000/cdjd/shws-kf || true | ||
- docker build -t registry.******.com:5000/cdjd/shws-kf ./jd-ci/shws/kf/ | ||
- docker push registry.******.com:5000/cdjd/shws-kf | ||
- rm -rf jd-ci/shws/kf | ||
``` | ||
|
||
这个配置文件中,`only`部分代表你的分支,script部分代表对应的脚本。其他业务系统需要替换的东西(比如构建镜像的名字,缓存的名称,这些可以自定义)。 | ||
### 结束 | ||
以上就是gitlab runner + docker实现自动构建打包镜像并上传的简单教程。 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,129 @@ | ||
--- | ||
title: postgreSQL 日期函数整理 | ||
categories: Coding | ||
tags: [sql] | ||
date: 2018-03-19 21:18:41 | ||
--- | ||
|
||
|
||
最近在项目中维护某一张表的固定数据的时候,经常会用到postgreSQL的各种日期函数,所以简单整理一下。<!-- more --> | ||
## 获取系统时间的函数 | ||
### 获取当前完整时间 | ||
* 通过now()获取的时间是最完整的时间,包括时区,秒也保留到了6位小数。 | ||
``` | ||
select now(); | ||
-- 得到如下结果 | ||
'2018-03-19 21:28:31.545145+08' | ||
``` | ||
* current_timestamp 效果是和now()一样的。 | ||
``` | ||
select current_timestamp效果是和now; | ||
-- 得到如下结果 | ||
'2018-03-19 21:29:31.545145+08' | ||
``` | ||
### 获取当前时间 | ||
* current_time 只显示当前的时间,不包括日期 | ||
``` | ||
select current_time; | ||
-- 得到的结果如下 | ||
21:29:31.545145+08' | ||
``` | ||
### 获取当前日期 | ||
* current_date 只显示当前的日期,不包括小时等信息 | ||
``` | ||
select current_date; | ||
-- 得到的结果如下 | ||
'2018-03-19' | ||
``` | ||
|
||
## 日期计算函数 | ||
### 日期简单的加减 | ||
1. 一年后 | ||
``` | ||
select now() + interval '1 years'; | ||
select now() + interval '1 year'; | ||
select now() + interval '1 y'; | ||
select now() + interval '2 Y'; | ||
select now() + interval '2Y'; | ||
``` | ||
这几种写法都OK的。 | ||
2. 一个月后 | ||
``` | ||
select now() + interval '1 month'; | ||
``` | ||
3. 一周后 | ||
``` | ||
select now() + interval '1 week'; | ||
``` | ||
4. 一天后 | ||
``` | ||
select now() + '1 day' | ||
``` | ||
5. 一分钟后 | ||
``` | ||
select now() + '1 min'; | ||
``` | ||
|
||
interval 可以不写,其值可以是: | ||
|
||
| Abbreviation | Meaning | | ||
| ------------ | -------------------------- | | ||
| Y | Years | | ||
| M | Months (in the date part) | | ||
| W | Weeks | | ||
| D | Days | | ||
| H | Hours | | ||
| M | Minutes (in the time part) | | ||
| S | Seconds | | ||
|
||
|
||
### 计算时间差 | ||
使用 age(timestamp, timestamp)计算时间差 | ||
函数描述:计算两个日期之间相隔多少天,单个参数时表示与当前日期(current_date)相比 | ||
参数:age(timestamp,timestamp),age(timestamp) | ||
返回值:interval,两个日期之间的相隔天数 | ||
|
||
示例: | ||
``` | ||
Select age(timestamp '2001-04-10', timestamp '1957-06-13') | ||
Result: 43 years 9 mons 27 days | ||
``` | ||
## 时间字段的截取 | ||
|
||
在开发的过程中,有时候经常会用到日期的年,月,日,小时等值,PostgreSQL给我们 提供了一个非常便利的EXTRACT函数。 | ||
``` | ||
EXTRACT(field FROM source) | ||
``` | ||
field 表示取的时间对象,source 表示取的日期来源,类型为 timestamp、time 或 interval。 | ||
* 取年份 | ||
``` | ||
select extract(year from now()); | ||
Result: 2018 | ||
``` | ||
* 取月份 | ||
``` | ||
select extract(month from now()); | ||
Result: 3 | ||
select extract(day from timestamp '1994-08-20'); | ||
Result: 8 | ||
``` | ||
* 查看今天是一年中的第几天 | ||
``` | ||
select extract(doy from now()); | ||
``` | ||
* 查看现在距1970-01-01 00:00:00 UTC 的秒数 | ||
``` | ||
select extract(epoch from now()); | ||
``` | ||
* 把epoch 值转换回时间戳 | ||
``` | ||
SELECT TIMESTAMP WITH TIME ZONE 'epoch' + 1369755555 * INTERVAL '1 second'; | ||
``` | ||
|
||
## 结语 | ||
以上是基本的PG时间/日期函数使用,有些函数因为下班了,家里电脑没环境,没跑结果出来,明天补上。`(明日复明日。。明日何其多。。)` | ||
|
||
详细用法请参考:[PostgreSQL官方说明][1] | ||
|
||
|
||
[1]: http://www.postgresql.org/docs/9.2/static/functions-datetime.html |
Oops, something went wrong.