0%
weblogic-nginx
发表于
更新于
docker构建lnmp环境
发表于
更新于
git操作
操作
git操作
入门
在github或gitee上创建一个仓库,大概都会有如下的入门提示:
# Git 全局设置:
git config --global user.name "流浪的法师"
git config --global user.email "lldfs@qq.com"
# 创建 git 仓库:
mkdir php-repop
cd php-repop
git init
touch README.md
git add README.md
git commit -m "first commit"
git remote add origin https://gitee.com/lldfs/php-repop.git
git push -u origin "master"
# 已有仓库?
cd existing_git_repo
git remote add origin https://gitee.com/chaofml/php-repop.git
git push -u origin "master"
cheat sheet
| 创建版本库 | |
|---|---|
| git clone |
克隆远程仓库 |
| git init | 初始化本地仓库 |
| 修改和提交 | |
|---|---|
| git status | 查看状态 |
| git diff | 查看变更内容 |
| git diff –cached | 查看 git add 后的变化 |
| git add . | 跟踪所有改动过的文件 |
| git add |
跟踪指定的文件 |
| git mv |
文件改名 |
| git rm |
删除文件 |
| git rm –cached |
停止跟踪文件但不删除 |
| git commit -m “commit msg” | 提交所有更新过的文件 |
| git commit –amend | 修改最后一次提交 |
| 查看提交历史 | |
|---|---|
| git log | 查看提交历史 |
| git log -p |
查看指定文件的提交历史 |
| git blame |
以列表方式查看指定文件的提交历史 |
| git diff e5216eca..HEAD |
查看某两次提交的之间的所有变化 |
| 撤销 | |
|---|---|
| git reset –hard HEAD | 撤销工作目录中所有未提交文件的修改内容 |
| git checkout HEAD |
撤销指定的未提交文件的修改内容 |
| git revert |
撤销指定的提交 |
| 分支与标签 | |
|---|---|
| git branch | 显示所有本地分支 |
| git checkout <branch/tag> | 切换到指定分支或标签 |
| git checkout -b <branch/tag> | 切换到指定分支或标签,如果不存在,则创建它 |
| git branch |
创建新分支 |
| git branch -d |
删除本地分支 |
| git tag | 列出所有本地标签 |
| git tag |
基于最新提交创建标签 |
| git tag -d |
删除标签 |
| 合并与衍合 | |
|---|---|
| git merge |
合并指定分支到当前分支 |
| git rebase |
衍合制定分支到当前分支 |
| 远程操作 | |
|---|---|
| git remote -v | 查看远程仓库信息 |
| git remote show |
查看指定远程仓库信息 |
| git remote add |
添加远程仓库 |
| git fetch |
从远程库获取代码 |
| git pull |
下载代码并快速合并 |
| git push |
上传代码及快速合并 |
| git push |
删除远程分支或标签 |
| git push –tags | 上传所有标签 |
云效平台
发表于
更新于
云效平台
war/jar包构建脚本
#source /etc/profile
#使用jdk的版本
export JAVA_HOME=/usr/install/java8
#进入应用目录如果是应用名字可以写成{appName}
cd ${appName}
#编译打包
/usr/install/maven3/bin/mvn clean install -D maven.test.skip
#进入target目录
cd target
#命名一个参数
request1="buildNum=${BUILD_NUMBER}"
#命名一个参数,warName上传的jar包一定要写正确
packageName="warName=@springboot-1.2.3-SNAPSHOT.jar"
#上传war包
curl -X POST -F "${packageName}" -F 'crid=${crid}' -F 'compileId=${compileId}' -F 'appName=${appName}' -F "${request1}" http://package.switch.uatyx.yundasys.com:9090/upload
K8s构建脚本-jar包
#source /etc/profile
#使用jdk的版本
export JAVA_HOME=/usr/install/java8
#进入应用目录如果是应用名字可以写成{appName}
cd ${appName}
#编译打包
/usr/install/maven3/bin/mvn clean install -D maven.test.skip
docker login -u alauda/yunxiaodev01 -p Yunxiaodev01@123 10.131.9.12:5000
docker build -t 10.131.9.12:5000/a05-international/${appName}:${version} .
docker push 10.131.9.12:5000/a05-international/${appName}:${version}
#镜像命名
packageName="10.131.9.12:5000/a05-international/${appName}:${version}"
#上传镜像
curl -X POST -F "imageName=${packageName}" -F 'crid=${crid}' -F 'compileId=${compileId}' -F 'appName=${appName}' http://package.switch.uatyx.yundasys.com:9090/callBack
k8s构建脚本
#source /etc/profile
cd ${appName}
docker login -u alauda/yunxiaodev01 -pYunxiaodev01@123 10.131.9.12:5000
docker build -t 10.131.9.12:5000/a03-finance/${appName}:${version} .
docker push 10.131.9.12:5000/a03-finance/${appName}:${version}
packageName="10.131.9.12:5000/a03-finance/${appName}:${version}"
#回调
curl -X POST -F "imageName=${packageName}" -F 'crid=${crid}' -F 'compileId=${compileId}' -F 'appName=${appName}' http://package.switch.uatyx.yundasys.com:9090/callBack
部署方式
k8s
base
部署配置
部署使用到的模板
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: ${wayne-app}
labels:
wayne-app: ${wayne-app}
wayne-ns: default
app: ${wayne-app}
spec:
selector:
matchLabels:
app: ${wayne-app}
template:
metadata:
labels:
wayne-app: ${wayne-app}
wayne-ns: default
app: ${wayne-app}
spec:
containers:
- resources:
limits:
memory: ${lim_mem}
cpu: '${lim_cpu}'
requests:
memory: ${req_mem}
cpu: '${req_cpu}'
env: []
envFrom: []
imagePullPolicy: IfNotPresent
image: '${image}'
name: ${wayne-app}
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 20%
maxUnavailable: 1
---
apiVersion: v1
kind: Service
metadata:
name: ${wayne-app}
labels:
wayne-app: ${wayne-app}
wayne-ns: default
app: ${wayne-app}
spec:
selector:
app: ${wayne-app}
ports:
- protocol: TCP
targetPort: ${serviceTarPort}
port: ${servicePort}
name: ${wayne-app}
type: NodePort
以上,凡是存在${变量名}的变量,在部署的时候,要求填写变量,
以下为变量,
req_mem:4Gi;
lim_cpu:2;
req_cpu:1;
serviceTarPort:8081;
wayne-app:yajun-test-application;
servicePort:8081;
lim_mem:4Gi
服务中的三个端口:
port 端口 (内部访问端口)
k8s集群内部服务之间相互访问service的端口。
targetPort端口 (docker暴露端口)
它就是容器真正暴露的端口(使用DockerFile中的EXPOSE),targetPort是pod上的端口,从port和nodePort上来的流量,经过kube-proxy流入到后端pod的targetPort上,最后进入容器内。
nodePort 端口 (对外访问端口)
k8s集群中发发布完service之后,如果需要外部访问,nodePort是一种访问方式,即nodePort是提供给外部流量访问k8s集群中service使用的端口。
例如外部用户要访问k8s集群中的一个Web应用,那么我们可以配置对应的service如下,就可以从外部通过浏览器http://node:28080访问到该web服务。
针对公司云效平台部署的时候,从外部访问时,端口变化,可以增加倒数第3行内容。如下:
spec:
selector:
app: ${wayne-app}
ports:
- protocol: TCP
targetPort: ${serviceTarPort}
port: ${servicePort}
nodePort: ${nodePort} #固定外部访问端口。
name: ${wayne-app}
type: NodePort
k8s资源对象yaml参数说明
pod
apiVersion: v1 #指定api版本,此值必须在kubectl apiversion中
kind: Pod #指定创建资源的角色/类型
metadata: #资源的元数据/属性
name: web04-pod #资源的名字,在同一个namespace中必须唯一
labels: #设定资源的标签,详情请见http://blog.csdn.net/liyingke112/article/details/77482384
k8s-app: apache
version: v1
kubernetes.io/cluster-service: "true"
annotations: #自定义注解列表
- name: String #自定义注解名字
spec: #specification of the resource content 指定该资源的内容
restartPolicy: Always #表明该容器一直运行,默认k8s的策略,在此容器退出后,会立即创建一个相同的容器
nodeSelector: #节点选择,先给主机打标签kubectl label nodes kube-node1 zone=node1
zone: node1
containers:
- name: web04-pod #容器的名字
image: web:apache #容器使用的镜像地址
imagePullPolicy: Never #三个选择Always、Never、IfNotPresent,每次启动时检查和更新(从registery)images的策略,
# Always,每次都检查
# Never,每次都不检查(不管本地是否有)
# IfNotPresent,如果本地有就不检查,如果没有就拉取
command: ['sh'] #启动容器的运行命令,将覆盖容器中的Entrypoint,对应Dockefile中的ENTRYPOINT
args: ["$(str)"] #启动容器的命令参数,对应Dockerfile中CMD参数
env: #指定容器中的环境变量
- name: str #变量的名字
value: "/etc/run.sh" #变量的值
resources: #资源管理,请求请见http://blog.csdn.net/liyingke112/article/details/77452630
requests: #容器运行时,最低资源需求,也就是说最少需要多少资源容器才能正常运行
cpu: 0.1 #CPU资源(核数),两种方式,浮点数或者是整数+m,0.1=100m,最少值为0.001核(1m)
memory: 32Mi #内存使用量
limits: #资源限制
cpu: 0.5
memory: 32Mi
ports:
- containerPort: 80 #容器开发对外的端口
name: httpd #名称
protocol: TCP
livenessProbe: #pod内容器健康检查的设置,详情请见http://blog.csdn.net/liyingke112/article/details/77531584
httpGet: #通过httpget检查健康,返回200-399之间,则认为容器正常
path: / #URI地址
port: 80
#host: 127.0.0.1 #主机地址
scheme: HTTP
initialDelaySeconds: 180 #表明第一次检测在容器启动后多长时间后开始
timeoutSeconds: 5 #检测的超时时间
periodSeconds: 15 #检查间隔时间
#也可以用这种方法
#exec: 执行命令的方法进行监测,如果其退出码不为0,则认为容器正常
# command:
# - cat
# - /tmp/health
#也可以用这种方法
#tcpSocket: //通过tcpSocket检查健康
# port: number
lifecycle: #生命周期管理
postStart: #容器运行之前运行的任务
exec:
command:
- 'sh'
- 'yum upgrade -y'
preStop: #容器关闭之前运行的任务
exec:
command: ['service httpd stop']
volumeMounts: #详情请见http://blog.csdn.net/liyingke112/article/details/76577520
- name: volume #挂载设备的名字,与volumes[*].name 需要对应
mountPath: /data #挂载到容器的某个路径下
readOnly: True
volumes: #定义一组挂载设备
- name: volume #定义一个挂载设备的名字
#meptyDir: {}
hostPath:
path: /opt #挂载设备类型为hostPath,路径为宿主机下的/opt,这里设备类型支持很多种
Docker图形界面管理之Portainer
发表于
更新于
docker设置国内镜像源
发表于
更新于
docker设置国内镜像源
# vi /etc/docker/daemon.json
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
#重启服务生效
systemctl restart docker.service
如果使用阿里云服务器,则可以如下设置:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://sfxb78lw.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
设置后,确实访问的速度变快了,如下载rancher/server镜像的时候,设置后,很快下载好镜像。
Jenkinsfile文件学习
发表于
更新于