1、安装服务器
1.安装Vm虚拟机以及Centos7系统
2.Centos上设置代理(翻墙用)
临时开代理命令 (根据实际修改IP和端口):
export http_proxy="[http://10.5.21.127:1080](http://10.5.21.127:1080/)"
export https_proxy="[http://10.5.21.127:1080](http://10.5.21.127:1080/)"
export ftp_proxy="[http://10.5.21.127:1080](http://10.5.21.127:1080/)"
3.测试:curl google.com
接受到返回值带有html的标签说明翻墙成功
2、安装Docker
1、卸载旧版
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
2、安装依赖包
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
3、安装repository
https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager \
--add-repo \
4、安装docker
yum install docker-ce
5、修改 daemon.json
vim /etc/home/daemon.json
{"registry-mirrors":["[https://aaxe3v8h.mirror.aliyuncs.com](https://aaxe3v8h.mirror.aliyuncs.com/)"]}
6、启动
systemctl start docker
7、设置开机启动
systemctl enable docker
3、安装Jdk
官网下载jdk:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
把安装包在/usr/data/下,通过命令安装jdk:# rpm -ivh jdk-8u201-linux-x64.rpm
安装完即可,不需要配置环境变量
4、安装Jenkins
1、安装:http://pkg.jenkins-ci.org下载最近对应安装包
和安装Jdk一样,把下载好的安装包放到/usr.data/ 下 通过命令安装:rpm -ivh jenkins-2.7.3-1.1.noarch.rpm
2、配置:
修改默认用户
vim /etc/sysconfig/jenkins
JENKINS_USER="root"
启动、停止、重启 (配置修改后需要重启)
service jenkins start/stop/restart
开机启动
systemctl enable docker
5、配置防火墙 (firewall)
先把防火墙关闭、然后再执行永久关闭,一下是相关的命令:
1、查看firewall服务状态
systemctl status firewalld
2、查看firewall的状态
firewall-cmd --state
3、开启、重启、关闭、firewalld.service服务
开启
service firewalld start
重启
service firewalld restart
关闭(重启后失效)
service firewalld stop
永久关闭(重启后仍有效)
systemctl disable firewalld
4、查看防火墙规则
firewall-cmd --list-all
5、查询、开放、关闭端口
查询端口是否开放
firewall-cmd --query-port=8080/tcp
开放80端口
firewall-cmd --permanent --add-port=80/tcp
移除端口
firewall-cmd --permanent --remove-port=8080/tcp
重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
参数解释
1、firwall-cmd:是Linux提供的操作firewall的一个工具;
2、--permanent:表示设置为持久;
3、--add-port:标识添加的端口;
6、安装GitLab
1、通常会将 GitLab 的配置 (etc) 、 日志 (log) 、数据 (data) 放到容器之外, 便于日后升级, 因此请先准备这三个目录。
mkdir -p /home/gitlab/etc
mkdir -p /home/gitlab/log
mkdir -p /home/gitlab/data
2、准备好这三个目录之后, 就可以开始运行 Docker 镜像了。 我的建议是使用unless-stopped 作为重启策略,
因为这样可以手工停止容器, 方便维护。
完整的运行命令如下:
docker run \
-p 8443:443 \
-p 8888:80 \
-p 2222:22 \
-p 9090:9090 \
--name gitlaba \
--restart always \
-v /home/gitlab/config:/etc/gitlab \
-v /home/gitlab/log:/var/log/gitlab \
-v /home/gitlab/opt:/var/opt/gitlab \
gitlab/gitlab-ce:latest
3、修改gitlab.rb 把external_url改成部署机器的域名或者IP地址,命令:
查看gitlab的镜像id:docker ps
进入gitlab容器:docker exec -t -i e4d8f2dbae69 bash
编辑文件:vim /etc/gitlab/gitlab.rb //注意IP后面不能有端口号
4、修改gitlab配置文件:改ip和端口,这样git克隆的时候就显示ip地址而不是镜像ID
命令 :vim /home/gitlab/opt/gitlab-rails/etc/gitlab.yml
5、重启docker
命令:docker start gitlab
7、安装git
因为Jenkins 要用git 才能拉取代码,所以在服务器上要安装一个git给Jenkins用
yum install -y git
8、安装maven
在官网下载最新的maven包:http://maven.apache.org/download.cgi
1.自己创建一个路径/usr/local/maven,将文件解压到该路径下:
tar -zxvf apache-maven-3.6.0-bin.tar.gz -C /usr/local/maven/
2.设置环境变量:
vim /etc/profile
3.在/etc/profile的文件末尾添加以下配置:
export M2_HOME=/usr/local/maven/apache-maven-3.6.0
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$M2_HOME/bin:$PATH
4.执行source命令让新配置立即生效:
source/etc/profile
5.安装好后测试一下:mvn -v
9、Git配置多个SSH-Key
我是搭建虚拟机的来配置这些,所以我本机有一个公司的Git SSH-Key,我还需要给虚拟机的GitLab再配置一个GitKey。这样用需要生成一个自定义用的SSH-Key:
$ ssh-keygen -t rsa -C "youremail@your.com” -f ~/.ssh/id_rsa_gitlablocalhost
然后需要配置config文件
# gitlab
Host gitlab.com
HostName 10.5.2.121
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
# gitlablocalhost
Host gitlab.localhost
HostName 192.168.26.128
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_gitlablocalhost
然后把刚刚创建的ssh-key加到自己创建的GitLab的settings里,此处省略。。。。。。。
10、配置Jenkins
1.安装插件:系统管理->插件管理
安装git相关的插件、maven相关的插件
2.凭据Jenkins
3.创建新任务
要构建一个maven项目:
4.新任务配置
1.配置gitlab:需要ssh的git地址,加入账号
2.配置触发器:将url、key填入到gitlab中的项目设置里:
gitlab截图如下:
然后点击addwebhook、然后测试一下
3.配置编译、打包
4.执行shell
shell中的大概分为一下几步
1.将dockerfile放到指定目录里
2.将打好的jar包复制到和dockerfile同路径下:cp /路径/demo.jar ${dockerfile路径}
3.构建docker镜像:docker build -t ${服务名字} .
4.启动镜像:docker run --name ${服务名字} -v ${dockerfile路径}:${dockerfile路径} -d -p 9999:8080 ${服务名字}
8080为tomcat的启动端口,9999为服务器端口,项目启动后访问地址为:192.168.xx.xx:9999/hello
代码如下:
#操作/项目路径(Dockerfile存放的路劲)
BASE_PATH=/work/project
# 源jar路径
SOURCE_PATH=/var/lib/jenkins/workspace/springboot-maven/target
#docker 镜像/容器名字或者jar名字 这里都命名为这个
SERVER_NAME=demo-test-0.0.1
#容器id
CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
#镜像id
IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}')
DATE=`date +%Y%m%d%H%M`
# 最新构建代码 移动到项目环境
function transfer(){
echo "最新构建代码 $SOURCE_PATH/$SERVER_NAME.jar 迁移至 $BASE_PATH ...."
cp $SOURCE_PATH/$SERVER_NAME.jar $BASE_PATH
echo "迁移完成"
}
# 备份
function backup(){
if [ -f "$BASE_PATH/$SERVER_NAME.jar" ]; then
echo "$SERVER_NAME.jar 备份..."
cp $BASE_PATH/$SERVER_NAME.jar $BASE_PATH/backup/$SERVER_NAME-$DATE.jar
echo "备份 $SERVER_NAME.jar 完成"
else
echo "$BASE_PATH/$SERVER_NAME.jar不存在,跳过备份"
fi
}
# 构建docker镜像
function build(){
if [ -n "$IID" ]; then
echo "存在$SERVER_NAME镜像,IID=$IID"
else
echo "不存在$SERVER_NAME镜像,开始构建镜像"
cd $BASE_PATH
docker build -t $SERVER_NAME .
fi
}
# 运行docker容器
function run(){
backup
transfer
build
if [ -n "$CID" ]; then
echo "存在$SERVER_NAME容器,CID=$CID,重启docker容器 ..."
docker restart $SERVER_NAME
echo "$SERVER_NAME容器重启完成"
else
echo "不存在$SERVER_NAME容器,docker run创建容器..."
docker run --name $SERVER_NAME -v $BASE_PATH:$BASE_PATH -d -p 9999:8080 $SERVER_NAME
echo "$SERVER_NAME容器创建完成"
fi
}
#入口
run
5.设置jar包位置
11、spring-boot配置maven插件
1.在pom.xml中设置jar包和名字
<packaging>jar</packaging>
2.设置maven插件
<docker.image.prefix>demo</docker.image.prefix>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration>
<repository>${docker.image.prefix}/${project.artifactId}</repository>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
12、配置Dockerfile
1.在服务器获取镜像:docker pull java:8
2.配置dockerfile文件:
FROM java:8
ADD demo-test-0.0.1.jar /app.jar
EXPOSE 8080
ENTRYPOINT ["/usr/bin/java","-jar","app.jar"]
将配置好的dockerFile放到服务器指定路径下,或者放在spring-boot项目中,将Jenkins中shell代码中的基本路径改为项目路径即可。本次搭建的Jenkins自动生成jar包的路径在:/var/lib/jenkins/workspace/springboot-maven/target下
以上的配置全部OK后就可以通过git push代码自动发布了。
13、总结
从搭建到完成一共花了5天时间,途中遇到各种各样的坑。一个问题一个问题解决:问人&百度,记录此博客以后备用。下次安装内容:redis、mysql等
网友评论