springboot jenkins docker Dockerfile 打包发布项目

2 篇文章 0 订阅
1 篇文章 0 订阅

利用docker 发布镜像,运行项目有两种方式:

1、通过dockerfile,手动编写docker命令  项目代码无侵入式 创建、运行镜像

2、通过插件(maven插件、idea插件)自动打包发布、运行镜像

本文详细介绍第一种使用方式,本文仅供学习,生产环境的使用还需要完善优化。

至于第二中 需要在pom.xml文件中加入docker的plugin的配置

项目环境 springboot + springcloudAlibaba + nacos  maven jenkins docker

1、在项目中创建文件 Dockerfile(名称要一致)

结构如下,也可在其它位置创建此配置文件

 2、配置文件内容如下


#构建镜像的Dockerfile
# 此点网上标注的但自己未理解:注意Dockerfile必须和Jar包在同一路径下(在需要运行的服务器上的路径是一直的)

# FROM 基础镜像必要,代表你的项目将构建在这个基础上面
# From java image, version : 8
FROM java:8

# 挂载app目录   VOLUME 创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等。
# VOLUME 指定了临时文件目录为/myDockerTestApp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/myDockerTestApp
VOLUME /myDockerTestApp

#作者名称
MAINTAINER kylin

# 该指令用于指定工作目录
# 使用WORKDIR指令可以来指定工作目录(或称为当前目录),以后各层的当前目录就被改为指定的目录,如该目录不存在,WORKDIR会帮你建立目录。
# 可使用命令: sudo docker exec -it containerID /bin/bash 进入到docker的工作目录
WORKDIR /opt/workspace/kylin-docker/basic-test

# 配置环境变量,可以设置一下配置参数
ENV NACOS_GROUP=ws_basic_test
ENV NACOS_PREFIX=basic_test

##将maven构建好的jar添加到镜像中(前面为打包出的jar包名名(为相对路径,相对Dockerfile文件的路径),,后面任意与上上步执行shell中一致即可)
# 将jar包添加到容器中并更名为basic-1.0.jar(放到docker工作目录中)
#ADD ./target/basic-docker-0.0.1-SNAPSHOT.jar basic-1.0.jar
ADD ./target/basic-docker-0.0.1-SNAPSHOT.jar basic-1.0.jar

# 容器开放端口    EXPOSE 允许指定端口转发
# EXPOSE指令是声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务。
#在运行时使用随机端口映射时,也就是docker run -P时,会自动随机映射EXPOSE的端口
EXPOSE 6012

# 容器执行命令  ENTRYPOINT 指定 Docker image 运行成 instance (也就是 Docker container) 时,要执行的命令或者文件。
ENTRYPOINT ["java", "-jar", "-Dfile.encoding=utf-8", "basic-1.0.jar"]

 注:上面配置文件中的环境变量的配置可以设置一些系统的参数如下(和naocs配置文件bootstrap.yml 的参数对应)

3、配置jenkins

 

 注: jenkin的具体相关配置可以查询其它文章,此处不做具体讲解

shell脚本如下(截图中的shell脚本是最简单的构建镜像和启动容器,下面的shell脚本加入了判断,先删除已存在的):

PIDS=`sudo docker ps -q --filter ancestor=basicdocker`
if [ "$PIDS" != "" ]; then
sudo sudo docker rm -f "$PIDS"
sudo docker rmi basicdocker
echo "已关闭存在的容器镜像!"
else
echo "不存在,不执行关闭"
fi
# 删除之前已存在的容器
#sudo docker rm -f $(sudo docker ps -q --filter ancestor=basicdocker) &&
# 删除之前已存在的镜像
#sudo docker rmi basicdocker &&
sudo docker build -t basicdocker . && sudo docker run -d -p 5012:7012 basicdocker

#docker build -t $IMAGE_NAME -f $SOURCE_PATH/Dockerfile .
# 其中 $SOURCE_PATH/Dockerfile 指定 Dockerfile文件的路径
 
 # 可通过如下命令(-e paramname="value") 在启动容器时 加入参数 
 # NACOS_GROUP 和 dockerfile 中设置的 ENV NACOS_GROUP=ws_basic_test 环境变量相对应
 # sudo docker run -d -p 5012:7012 -e NACOS_GROUP="ws_basic_test" basicdocker 

下面的脚本是加入了:把镜像加入到阿里的镜像仓库中

IMAGE_NAME='basicdocker'
PIDS=`sudo docker ps -q --filter ancestor=$IMAGE_NAME`
if [ "$PIDS" != "" ]; then
sudo sudo docker rm -f "$PIDS"
sudo docker rmi $IMAGE_NAME
echo "已关闭存在的容器镜像!"
else
echo "不存在,不执行关闭"
fi
# 删除之前已存在的容器
#sudo docker rm -f $(sudo docker ps -q --filter ancestor=basicdocker) &&
# 删除之前已存在的镜像
#sudo docker rmi basicdocker &&

sudo docker build -t $IMAGE_NAME . 

PIDS_CUR=`sudo docker images -q --filter reference=$IMAGE_NAME`
echo "当前构建镜像pid=$PIDS_CUR!"

#输入要推送镜像的地址,根据镜像仓库提示的地址复制
echo '================推送镜像开始================'
sudo docker login --username=yourusername --password=yourpassword registry.cn-hangzhou.aliyuncs.com
sudo docker tag $PIDS_CUR registry.cn-hangzhou.aliyuncs.com/xxx-docker/xxx-docker-repository:V0.0.2
sudo docker push registry.cn-hangzhou.aliyuncs.com/xxx-docker/xxx-docker-repository:V0.0.2
echo '================推送镜像结束================'

sudo docker run -d -p 5012:7012 $IMAGE_NAME
 
 # 可通过如下命令(-e paramname="value") 在启动容器时 加入参数 
 # NACOS_GROUP 和 dockerfile 中设置的 ENV NACOS_GROUP=ws_basic_test 环境变量相对应
 # sudo docker run -d -p 5012:7012 -e NACOS_GROUP="ws_basic_test" basicdocker 

4、通过docker images 查看镜像

        通过docker ps 查看正在运行的容器

 5、通过docker命令 docker inspect basicdocker  查看 容器的相关配置

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值