一键部署构建,基于阿里云centos和idea,svn,springcloud-demo项目
- 1.需要安装的工具`注意开放对应端口`
- docker安装
- docker-compose安装
- docker本地镜像仓库搭建
- svn服务器和window客户端安装
- jenkins安装
- 2.项目搭建(spring cloud demo)
- 3.jenkins配置和搭建
1.需要安装的工具注意开放对应端口
docker安装
安装docker 并且配置docker对外开放端口,使用idea,remote连接
docker-compose安装
下载
curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
下载成功后添加可执行权限
chmod +x /usr/local/bin/docker-compose
版本更新后,旧的下载地址可能会过期,可以直接前往https://github.com/docker/compose/releases
查看下载链接
验证是否成功
docker-compose -v
docker本地镜像仓库搭建
下载Registry镜像并启动
拉取镜像
docker pull registry
启动容器
docker run -d -v /edc/images/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry
配置私有仓库的可信任
vim /etc/docker/daemon.json
添加
{
"insecure-registries" : [ "your-server-ip:5000" ]
}
重启docker
systemctl restart docker
查看仓库
curl http://your-server-ip:5000/v2/_catalog
查看镜像标签
curl http://your-server-ip:5000/v2/镜像名/tags/list
svn服务器和window客户端安装
安装完成后,测试连接服务器
jenkins安装
yum install -y java-1.8.0-openjdk #如果自己配置了jdk,就要创建软连接,在下面教程
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key #安装jenkins key
yum install -y jenkins 安装
安装完成后可以对jenkins进行一些基础配置
修改配置文件
vim /etc/sysconfig/jenkins
可需要修改内容
JENKINS_USER="root" 为避免权限问题,建议直接将jenkins用户设置为root
JENKINS_PORT="5555" 启动端口号
修改目录权限
chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins
重启服务
service jenkins restart
启动jenkins
systemctl start jenkins
cat /var/log/jenkins/jenkins.log 查看启动日志
jenkins依赖java环境,如果没有安装请先安装jdk
如果安装了jdk还是不能启动,检查一下是否jdk安装目录不是一般的默认目录,比如/usr/bin/,
如果不是,创建一个软链接即可。
ln -s /usr/local/java/jdk1.8.0_171/bin/java /usr/bin/java
其中/usr/local/java/jdk1.8.0_171/bin/java是你本机jdk的安装目录
- 访问安装:
打开浏览器,访问ip:5555
进行安装,ip为服务器外网ip
- 选择安装推荐插件
- 等待安装,注意该步骤安装缓慢。经常失败重试。慢慢等到装好就行了
- 安装完成后创建用户,开始使用。
2.项目搭建(spring cloud demo)
不懂docker怎么连接,使用的请看
Dcoker三剑客安装和基本使用
- 项目基本目录结构,项目搭建省略,搭建成功后并在本机运行测试成功
-
Dockerfile
文件代码
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER eangulee <eangulee@gmail.com>
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
#VOLUME /home/tmp
#ADD ../../../target/springboot-demo-0.0.1-SNAPSHOT.jar springboot-demo.jar
#插件定义的jar包路径参数
ARG JAR_FILE
#端口暴露
EXPOSE 8080
# 将jar包添加到容器中并更名为jz-cloud-consumer.jar
ADD ${JAR_FILE} /home/service/jz-cloud-consumer.jar
#运行jar包
ENTRYPOINT ["java", "-jar", "/home/service/jz-cloud-consumer.jar"]
-
docker-compose.yml
文件代码
version: '2'
services:
jz-euraka:
image: 101.37.30.142:5000/jz-euraka:xiao7
container_name: jz-euraka
restart: always
ports:
- "7001:7001"
jz-cloud-provider:
image: 101.37.30.142:5000/jz-cloud-provider:xiao7
container_name: jz-cloud-provider
ports:
- "7002:7002"
restart: always
depends_on:
- jz-euraka
jz-cloud-consumer:
image: 101.37.30.142:5000/jz-cloud-consumer:xiao7
container_name: jz-cloud-consumer
restart: always
ports:
- "7003:7003"
depends_on:
- jz-euraka
- docker插件配置,配置打包同步创建镜像,push镜像到docker仓库
pom.xml部分代码
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR3</spring-cloud.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- 仓库地址 -->
<docker.image.prefix>101.37.30.142:5000</docker.image.prefix>
<!-- docker 远程地址 -->
<docker.host>http://101.37.30.142:2375</docker.host>
<!-- docker 插件版本 -->
<docker.maven.version>1.2.0</docker.maven.version>
</properties>
<build>
<!-- 打包的jar包名称,jar包名有大写会失败 -->
<finalName>jz-euraka</finalName>
<!-- 注意加上 -->
<defaultGoal>compile</defaultGoal>
<plugins>
<!-- maven插件,一定要加 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- docker插件,一定要加 -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>${docker.maven.version}</version>
<executions>
<!-- 配置package操作时,执行build-->
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
<!-- 配置package操作时,执行tag打镜像标签-->
<execution>
<id>tag-image</id>
<phase>package</phase>
<goals>
<goal>tag</goal>
</goals>
<configuration>
<!-- 镜像名-->
<image>${docker.image.prefix}/${project.build.finalName}:latest</image>
<!-- 打上的标签名-->
<newName>${docker.image.prefix}/${project.build.finalName}:xiao7</newName>
</configuration>
</execution>
<!-- 配置deploy操作时,执行push到镜像仓库的操作-->
<execution>
<id>push-image</id>
<phase>deploy</phase>
<goals>
<goal>push</goal>
</goals>
<configuration>
<imageName>${docker.image.prefix}/${project.build.finalName}:latest</imageName>
</configuration>
</execution>
</executions>
<!-- 插件配置-->
<configuration>
<!-- build的镜像名称-->
<imageName>${docker.image.prefix}/${project.build.finalName}</imageName>
<!-- 远程连接docker主机-->
<dockerHost>${docker.host}</dockerHost>
<!-- 你的Dockerfile文件的存放目录-->
<dockerDirectory>${basedir}/src/main/docker</dockerDirectory>
<!-- 配置不跳过Build-->
<skipDockerBuild>false</skipDockerBuild>
<!-- 配置参数-->
<buildArgs>
<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
<!-- 将jar加入docker资源目录-->
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<!-- build 完成后 push 镜像 -->
<pushImage>true</pushImage>
</configuration>
</plugin>
</plugins>
</build>
- 打包后的结果
- 查看镜像和仓库
3.jenkins配置和搭建
也可以装window版本的jenkins,配置本地的配置就行了
- 插件准备,安装maven,ssh,svn插件
- 配置全局ssh连接阿里云服务器
- 配置全局工具
- 创建任务
- 配置任务
- 开始构建
- 查看控制台输出
- 最后查看服务器情况
这样启动可能会失败,因为不同容器内的服务启动有时间先后问题。
docker-compose在配置分布式依赖项目的时候存在启动先后的问题:
解决方案:
https://www.jianshu.com/p/d2f39703bcb5
完毕~~~