软件开发过程中,往往会遇到版本管理问题,也常常会遇到服务多版本管理问题,也常常会遇到不同版本的服务之间,数据库字段不同、建表语句不同的问题,那么如何在不同版本间进行平滑升级,那么就需要有一系列的规范(暂不涉及回退方案):
自动化管理,由程序在启动前操作:
本项目是将restful项目打包成可执行的war包,在docker中执行
docker 1.10.3jetty 8jersey 1.19
<build><finalName>${project.artifactId}</finalName><plugins><plugin><groupId>org.mortbay.jetty</groupId><artifactId>jetty-maven-plugin</artifactId><version>${jetty.version}</version><configuration><systemProperties></systemProperties><webApp><contextPath>/</contextPath></webApp></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>2.5.1</version><configuration><source>1.7</source><target>1.7</target></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>2.2</version><executions><execution><id>attach-sources</id><goals><goal>jar</goal></goals></execution></executions></plugin><plugin><groupId>org.
Docker的使用中,尤为重要的是服务发现和docker的宿主机集群及跨主机overlay网络的搭建,这里来介绍下常用来配合使用的swarm+consul集群的搭建(此处全基于docker容器)
192.168.11.30 为consul服务的leader,swarm的集群server和client节点,并为primary
192.168.11.32 为consul服务的节点,swarm的集群server和client节点,并为备份节点
192.168.11.30:
consul、swarm、nginx
192.168.11.32:
consul、swarm、nexus、jenkins、registry
cluster-store 是consul的leader的地址
cluster-advertise 是swarm client的地址,即当前主机
11.30
vi /usr/lib/systemd/system/docker.serviceExecStart=/usr/bin/docker daemon --tls=false -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375 --cluster-store=consul://192.168.11.30:8500 --cluster-advertise=192.168.11.30:2375systemctl daemon-reloadsystemctl restart docker
11.32
vi /usr/lib/systemd/system/docker.serviceExecStart=/usr/bin/docker daemon --tls=false -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375 --cluster-store=consul://192.168.11.30:8500 --cluster-
在使用docker的时候,由于很多基础linux镜像都比较大,alpine这个仅仅几兆的linux基础镜像受到了很多人喜欢,笔者也不例外,可是由于alpine中的一些配置及命令与常见的centos等系统在一些方面不一样,下面来看看时区问题是如何解决的:
原因:alpine中,原生是不带时区相关的命令及文件的,需要安装额外的包来支持,然后需要将时区文件内容替换为localtime文件
FROM alpine:3.4MAINTAINER firewarm LightingLiu <liuyg@liuyingguang.cn># Install root filesystemADD ./rootfs /# Install base packagesRUN apk update && apk add curl bash tree tzdata \&& cp -r -f /usr/share/zoneinfo/Hongkong /etc/localtime \&& echo -ne "Alpine Linux 3.4 image. (`uname -rsv`)\n" >> /root/.built# Define bash as default commandCMD ["/bin/bash"]
当这个镜像完成以后,不需要配置任何环境变量即可使用京八区的时区及时间
docker run -it --rm alpine /bin/sh/ # dateSun May 8 20:46:18 UTC 2016/ # apk add -U tzdatafetch http://dl-cdn.alpinelinux.org/alpine/v3.3/main/x86_64/APKINDEX.tar.gzfetch http://dl-cdn.alpinelinux.org/alpine/v3.3/comm