Dockerfile文件内容及位置
- 文件所在的目录
- Dockerfile内容
FROM registry.cn-hangzhou.aliyuncs.com/ejy365/ejy-jdk8:2.0.4 # 添加当前包 ADD ./target/eureka-*.jar app.jar # 环境变量 ENV HOST_NAME 127.0.0.1 ENV DEFAULT_ZONE http://127.0.0.1:8761/eureka/ # 暴露端口 EXPOSE 8761 # 作者信息 MAINTAINER zangh <619144426@qq.com>
SpringBoot依赖配置
- dockerfile-maven-plugin插件为
docker-maven-plugin(不再维护)的升级版本。- 通过系统变量DOCKER_HOST可指定docker服务接口
<plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>1.4.10</version> <executions> <execution> <id>build-image</id> <goals> <!-- 如果package时不想用docker打包,就注释掉这个goal --> <goal>build</goal> <goal>push</goal> <goal>tag</goal> </goals> </execution> </executions> <configuration> <!-- 对应docker images下的REPOSITORY --> <repository>${docker.image.prefix}/${docker.project.artifactId}</repository> <!-- 对应docker images下的TAG,默认latest --> <tag>${project.version}</tag> <buildArgs> <JAR_FILE>target/${project.build.finalName}</JAR_FILE> </buildArgs> </configuration> </plugin>
Jenkins任务配置
构建自由风格任务
-
选择参数配置化项目
-
如果存在多个jenkins运行节点,给每个节点打上一个或多个标签(相同的标签节点会自动成组)。通过选择标签制定任务只能在制定的jenkins节点上执行。
- 例如有三个如下节点(当选择标签java时,则改jenkins任务只会在node01,node02上被执行):
node01: centos java python
node02: centos java nodejs
node03: centos nodejs python
- 例如有三个如下节点(当选择标签java时,则改jenkins任务只会在node01,node02上被执行):
-
配置托管源码的CVM
-
配置maven构建参数
- clean package命令打包后,dockerfile:build命令会使用Dockerfile文件通过DOCKER_HOST指定的docker服务接口打包成Docker镜像并调用docker push命令推送镜像到云端(如需认证,还要填写-Ddockerfile.username=xxx -Ddockerfile.password=yyy)。
-
在目标节点上启动服务
服务节点配置
环境准备
- 安装docker服务参考,安装【docker in centos7.x】
启动脚本
- 以下以service-order服务为例的服务脚本:
#!/bin/bash name=service-order cId=$(docker ps -a | grep $name | awk '{print $1}') echo "$name container id : $cId" if [ -n "$cId" ]; then sId=$(docker ps | grep $name | awk '{print $1}') if [ -n "$sId" ]; then echo "stop container id :" docker stop $sId fi echo "rm container id :" docker rm $cId fi echo "restart container" docker login --username=1801****403 --password=***** registry.cn-hangzhou.aliyuncs.com docker pull registry.cn-hangzhou.aliyuncs.com/ejy365/zanghcloud-service-order:1.0.0-SNAPSHOT docker run --name $name \ --restart=always \ -v /usr/local/www/services/order/logs:/ejy/logs \ -p 9091:9091 \ -e HOST_NAME="192.168.1.133" \ -e DEFAULT_ZONE="http://admin:123456@192.168.1.130:8761/eureka/,http://admin:123456@192.168.1.131:8761/eureka/,http://admin:123456@192.168.1.132:8761/eureka/" \ -e IP_ADDRESS="192.168.1.133" \ -e jvmparams="-Xmx512m -Xms512m" \ -e profile="test" \ -d registry.cn-hangzhou.aliyuncs.com/ejy365/zanghcloud-service-order:1.0.0-SNAPSHOT