Docker教程(九)部署Spring Boot项目 | 您所在的位置:网站首页 › 腾讯云容器镜像服务怎么开启的视频 › Docker教程(九)部署Spring Boot项目 |
前面基本上都是安装软件,安装软件都是一样的步骤 搜索镜像拉取镜像挂载数据挂载配置启动说实话在介绍安装,都快把我拉黑了,那么本篇将讲下如何部署项目 一. 先设置远程连接Docker开启Docker远程连接后,在开发和学习时都能带来便利,但请不要将此方式用在外部网络环境,以免带来安全问题,下图是官方警告: ![]() file 1.1 编辑此文件:/lib/systemd/system/docker.service代码语言:javascript复制vim /lib/systemd/system/docker.service![]() file 如图所示加上 代码语言:javascript复制-H tcp://0.0.0.0:2375修改完毕后保存退出 1.2 重新加载配并重启docker代码语言:javascript复制systemctl daemon-reload && systemctl restart docker1.3 验证设置本级访问docke服务是否正常,如下,本机访问一切正常: 代码语言:javascript复制docker images![]() file 1.4 远程访问现在尝试从另一台装有docker的机器上测试远程访问本机,命令是docker -H tcp://xxx:2375 images,如下所示: 代码语言:javascript复制docker -H tcp://xxx:2375 images![]() file 大家可以看到,第一居然失败了,第一时间想到就是端口没放开,要修改安全组或者防火墙 目前为止,Docker远程设置完毕! 二. 准备web项目我这里以Spring Boot项目进行演示 ![]() file 项目结构目录: Dockerfile文件在src/main/docker下 application.properties 代码语言:javascript复制# 默认路径 spring.thymeleaf.prefix=classpath:/templates/ # 后缀 spring.thymeleaf.suffix=.html # 模板格式 spring.thymeleaf.mode=HTML5 # 字符编码 spring.thymeleaf.encoding=UTF-8 # 内容格式 spring.thymeleaf.servlet.content-type=text/html # 是否打开缓存 一般在开发过程中不建议打开 spring.thymeleaf.cache=false server.port=8005Dockerfile 代码语言:javascript复制# 基础镜像 FROM java:openjdk-8-jre-alpine # 维护者信息 MAINTAINER [email protected] #Default to UTF-8 file.encoding ENV LANG C.UTF-8 #设置alpine时区 ENV TIMEZONE Asia/Shanghai #alpine自带的包含dl-cdn的域名非常慢,需要修改后才能下载数据。 RUN apk add -U tzdata && ln -snf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime && echo "${TIMEZONE}" > /etc/timezone RUN sed -i -e 's/dl-cdn/dl-4/g' /etc/apk/repositories && apk add -U tzdata && ln -snf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime && echo "${TIMEZONE}" > /etc/timezone #添加应用 ADD springboot-thymeleaf-0.0.1-SNAPSHOT.jar springboot-thymeleaf-0.0.1-SNAPSHOT.jar #参数 #ENV PARAMS="" #执行操作 ENTRYPOINT [ "sh", "-c", "java -Xmx50m -Djava.security.egd=file:/dev/./urandom -jar springboot-thymeleaf-0.0.1-SNAPSHOT.jar" ]Dockfile配置文件详解: 代码语言:javascript复制FROM: 指定基础镜像,要在哪个镜像建立 MAINTAINER: 指定维护者信息 ENV LANG C.UTF-8: 解决中文乱码 #设置alpine时区 ENV TIMEZONE Asia/Shanghai #alpine自带的包含dl-cdn的域名非常慢,需要修改后才能下载数据。 RUN apk add -U tzdata && ln -snf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime && echo "${TIMEZONE}" > /etc/timezone RUN sed -i -e 's/dl-cdn/dl-4/g' /etc/apk/repositories && apk add -U tzdata && ln -snf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime && echo "${TIMEZONE}" > /etc/timezone Docker容器时区设置及时间同步 ADD springboot-thymeleaf-0.0.1-SNAPSHOT.jar springboot-thymeleaf-0.0.1-SNAPSHOT.jar 项目的 jar 文件作为 "springboot-thymeleaf-0.0.1-SNAPSHOT.jar" 添加到容器的 ENTRYPOINT 执行项目 springboot-thymeleaf-0.0.1-SNAPSHOT.jar,"/dev/urandom" 缩短 Tomcat 启动时间 三. 开始Docker部署项目常用的两种构建方式 Dockerfile和jar 在服务器上进行构建利用Maven的Docker打包工具进行应用构建同时推送到远程仓库3.1 本地生成jar传到服务器进行部署主要配置在pom.xml,运用maven插件,大概意思是打包时在target下创建lpine-test文件夹并把Dockerfile文件,打包好的jar包copy到lpine-test目录下 代码语言:javascript复制 org.springframework.boot spring-boot-maven-plugin maven-resources-plugin copy-resources validate copy-resources ${project.build.directory}/alpine-test src/main/docker true org.apache.maven.plugins maven-antrun-plugin package run 3.1.1 执行maven命令代码语言:javascript复制mvn clean && mvn package![]() ![]() ![]() file 发现Dockerfile文件和jar在一起了,那我们就把他俩送去新家吧 3.1.3 传到服务器使用SFTP即可 我这里是放到/usr/local/src下 ![]() file 3.1.4 进行构建镜像来到项目存放路径 代码语言:javascript复制cd /usr/local/src/alpine-test/![]() file 3.1.5 执行构建命令在该docker文件下 指令:docker build -t xxx . 执行docker build命令,docker就会根据Dockerfile里你定义好的命令进行构建新的镜像。 -t代表要构建的镜像,.代表当前目录xxx代表镜像名称以及标签代码语言:javascript复制docker build -t test:1.0 .![]() file 注: 大家如果构建太慢,可以把同步时间配置去掉 构建完成后,执行启动命令并查询日志 代码语言:javascript复制docker run -it -d --name test -p 8005:8005 test:1.0![]() file 3.1.6 测试访问之前要注意端口开放情况 打开浏览器访问: ip:8005/index即可 ![]() file 说明成功! 3.2 远程部署3.2.1 加入打包插件docker maven的pom依赖代码语言:javascript复制 com.spotify docker-maven-plugin 1.2.0 test-1 http://IP:2375 src/main/docker ${project.build.directory} ${project.build.finalName}.jar 3.2.2 执行命令代码语言:javascript复制mvn clean package docker:build -Dmaven.test.skip=true![]() ![]() ![]() file 3.2.3 运行镜像运行之前把之前的先停掉 代码语言:javascript复制docker stop test![]() file 执行刚刚构建的 代码语言:javascript复制docker run -it -d --name test -p 8005:8005 test-1:latest![]() file 3.2.4 测试打开浏览器访问:http:服务器地址:8005/index,即可 ![]() file 四. 总结本文一共讲解了两种构建方式 Dockerfile和jar 在服务器上进行构建利用Maven的Docker打包工具进行应用构建同时推送到远程仓库第一种方式适合已有的jar包,然后编写Dockerfile文件进行构建即可 其实原理都是一样的,都是把jar放入到容器中,然后利用java命令进行运行应用 本文测试SpringBoot项目源码: https://github.com/LiHaodong888/dockerexample |
CopyRight 2018-2019 实验室设备网 版权所有 |