作者:故事我忘了
个人微信公众号:程序猿的月光宝盒

目录

1. 方式1.通过idea 远程发布

1.1 修改docker.service文件

1. 进入服务器

  1. vim /usr/lib/systemd/system/docker.service

2. 修改ExecStart行为下面内容,把原来的注掉

  1. ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock \

3. 重加载

  1. systemctl daemon-reload // 1,加载docker守护线程
  2. systemctl restart docker // 2,重启docker

4. docker相关命令进行重开原有服务

1.2 验证

1. 查看端口情况

  1. netstat -nlpt

2. 调用

  1. curl http://127.0.0.1:2375/version

3. 出现下面的就表示成功

  1. {"Platform":{"Name":"Docker Engine - Community"},"Components":[{"Name":"Engine","Version":"20.10.6","Details":{"ApiVersion":"1.41","Arch":"amd64","BuildTime":"2021-04-09T22:43:57.000000000+00:00","Experimental":"false","GitCommit":"8728dd2","GoVersion":"go1.13.15","KernelVersion":"3.10.0-1127.19.1.el7.x86_64","MinAPIVersion":"1.12","Os":"linux"}},{"Name":"containerd","Version":"1.4.4","Details":{"GitCommit":"05f951a3781f4f2c1911b05e61c160e9c30eaa8e"}},{"Name":"runc","Version":"1.0.0-rc93","Details":{"GitCommit":"12644e614e25b05da6fd08a38ffa0cfe1903fdec"}},{"Name":"docker-init","Version":"0.19.0","Details":{"GitCommit":"de40ad0"}}],"Version":"20.10.6","ApiVersion":"1.41","MinAPIVersion":"1.12","GitCommit":"8728dd2","GoVersion":"go1.13.15","Os":"linux","Arch":"amd64","KernelVersion":"3.10.0-1127.19.1.el7.x86_64","BuildTime":"2021-04-09T22:43:57.000000000+00:00"}

Tips

1.vim 搜索字符串

  1. 1. 命令模式下,输入:/字符串
  2. 比如搜索user, 输入/user
  3. 2. 查看下一个匹配,按下n(小写n)
  4. 3. 跳转到上一个匹配,按下N(大写N
  5. 4. 搜索后,我们打开别的文件,发现也被高亮了,怎么关闭高亮?
  6. 命令模式下,
  7. 输入:nohlsearch
  8. 也可以:set nohlsearch
  9. 当然,可以简写:
  10. noh
  11. 或者 set noh

2.安全组记得开

3.idea配置,名字可以改

然后会在service窗口中出现

点击左上角运行就能看到服务器上已经在的容器

4.配置阿里云镜像加速器,不会的百度吧

1.3 编辑代码pom.xml

  1. <properties>
  2. <java.version>1.8</java.version>
  3. <!-- Step.1 设置docker镜像前缀-->
  4. <docker.image.prefix>jinsc</docker.image.prefix>
  5. </properties>
  1. <!-- Step.2 添加插件-->
  2. <plugin>
  3. <groupId>com.spotify</groupId>
  4. <artifactId>docker-maven-plugin</artifactId>
  5. <version>1.0.0</version>
  6. <configuration>
  7. <!--远程docker地址-->
  8. <dockerHost>http://x.x.x.x:2375</dockerHost>
  9. <!--镜像名称,前缀/项目名-->
  10. <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
  11. <!--dockerFile的位置-->
  12. <dockerDirectory>src/main/docker</dockerDirectory>
  13. <resources>
  14. <resource>
  15. <targetPath>/</targetPath>
  16. <!--默认的target文件夹位置-->
  17. <directory>${project.build.directory}</directory>
  18. <!--最终名称.jar-->
  19. <include>${project.build.finalName}.jar</include>
  20. </resource>
  21. </resources>
  22. </configuration>
  23. </plugin>

1.4 main中新建文件夹docker,并新建Dockerfile文件

Dockerfile

  1. FROM java:8
  2. VOLUME /tmp
  3. ADD provider-0.0.1-SNAPSHOT.jar /test.jar
  4. ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/test.jar"]

其中 provider-0.0.1-SNAPSHOT.jar是打出来的jar包名字

1.5 运行maven命令

maven的clean+package

在运行插件中docker的build

就能远程推送到远端

  1. //镜像id
  2. Successfully built 13b4c048a7e6
  3. // 项目名和版本号
  4. Successfully tagged jinsc/provider:latest
  5. [INFO] Built jinsc/provider
  6. [INFO] ------------------------------------------------------------------------
  7. [INFO] BUILD SUCCESS
  8. [INFO] ------------------------------------------------------------------------
  9. [INFO] Total time: 52.797 s
  10. [INFO] Finished at: 2021-10-22T15:07:58+08:00
  11. [INFO] ------------------------------------------------------------------------

连上服务器,已经有了

1.6 idea 服务窗口的docker中右键创建容器

点击运行就已经创建了

访问就有了

我这里是ws测试地址

用写的客户端已经连接并解析到

2. 方式2.传统模式

2.1 maven package 打包

2.2 把打的包放到服务器上

2.3 在服务器上创建文件夹

  1. [root@VM-0-9-centos /]# cd usr/local/
  2. [root@VM-0-9-centos local]# ls
  3. bin etc games include lib lib64 libexec qcloud sbin share src yd.socket.server
  4. [root@VM-0-9-centos local]# mkdir docker
  5. [root@VM-0-9-centos local]# ls
  6. bin docker etc games include lib lib64 libexec qcloud sbin share src yd.socket.server
  7. [root@VM-0-9-centos local]# cd docker/
  8. [root@VM-0-9-centos docker]# ls
  9. [root@VM-0-9-centos docker]# mkdir SB4WS
  10. [root@VM-0-9-centos docker]# ls
  11. SB4WS
  12. [root@VM-0-9-centos docker]#

2.4 把jar放进去

2.5 创建并编辑Dockerfile

vim Dockerfile

  1. FROM java:8
  2. VOLUME /tmp
  3. ADD provider-0.0.1-SNAPSHOT.jar /provider.jar
  4. EXPOSE 8080
  5. ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/provider.jar"]

意思分别是

  1. FROM :
  2. 表示基础镜像.运行环境
  3. VOLUME /tmp:
  4. 是创建tmp目录并持久化到Docker数据文件夹,因为sb使用的是内嵌的Tomcat,默认使用/tmp作为工作目录
  5. ADD:
  6. 拷贝文件并重命名,就是把前面的复制到后面的
  7. EXPOSE :
  8. 并不是正真的发布端口,这个只是容器部署人员和建立image人员之间的交流,即简历image的人员告诉容器部署人员容器应该映射哪个端口给外界
  9. ENTRYPOINT(入口点):
  10. 容器启动时运行的命令 ,相当于在命令行中输入 java -jar xxx.jar,为了缩短Tomcat 的启动时间,添加java.security.egd的系统属性指向 /dev/./urandom 作为ENTRYPOINT

2.6 创建镜像(在刚才的文件夹下)

  1. docker build -t provider .

已经ok

2.7 创建容器

  1. docker run -d --rm --name provider-8080 -p 8080:8080 provider
  2. PS 另一个(可以部署多个容器) 外网的:程序定的
  3. docker run -d --rm --name provider-8081 -p 8081:8080 provider

Tips:

1.查看日志

  1. docker logs -f --tail=500 provide-8080

2.进入容器内部 -it(交互) 后跟id号

  1. docker exec -it 96f93cc3b918 bash

3.在docker内部安装vim

实际在使用过程中,运行 apt-get update,然后执行 apt-get install -y vim,下载地址由于是海外地址,下载速度异常慢而且可能中断更新流程,所以做下面配置

  1. mv /etc/apt/sources.list /etc/apt/sources.list.bak
  2. echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >> /etc/apt/sources.list
  3. echo "deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list
  4. echo "deb-src http://mirrors.163.com/debian/ jessie main non-free contrib" >>/etc/apt/sources.list
  5. echo "deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list
  1. apt-get update
  2. apt-get install vim

SpringBoot打包到docker(idea+传统方式)的更多相关文章

  1. SpringBoot 打包为Docker进行

    可以有两种方式: 1.dockerfile 2.maven docker 第一种方式:通过dockerfile打包Docker镜像 1.将dockerfile和 springboot打包的jar文件放 ...

  2. SpringBoot打包成Docker镜像

    1. 本文环境 Maven:3.6.3(Maven配置参考) SpringBoot version:2.3.4.RELEASE Docker version: 19.03.11(Docker搭建参考) ...

  3. 【Docker】Maven打包SpringBoot项目成Docker镜像并上传到Harbor仓库(Eclipse、STS、IDEA、Maven通用)

    写在前面 最近,在研究如何使用Maven将SpringBoot项目打包成Docker镜像并发布到Harbor仓库,网上翻阅了很多博客和资料,发现大部分都是在复制粘贴别人的东西,没有经过实践的检验,根本 ...

  4. JAVA SpringBoot 项目打包(JAR),在打包成 docker 镜像的基本方法

    1,打包 SpringBoot 项目,使用 IDEA 如下图 2,将 JAR 包上传到安装了 Docker 的 linux 服务器上,并且在相容目录下创建一个名为 Dockerfile 的文件 3,在 ...

  5. Java SpringBoot 项目构建 Docker 镜像调优实践

    PS:已经在生产实践中验证,解决在生产环境下,网速带宽小,每次推拉镜像影响线上服务问题,按本文方式构建镜像,除了第一次拉取.推送.构建镜像慢,第二.三-次都是几百K大小传输,速度非常快,构建.打包.推 ...

  6. springboot打包不同环境配置与shell脚本部署

    本篇和大家分享的是springboot打包并结合shell脚本命令部署,重点在分享一个shell程序启动工具,希望能便利工作: profiles指定不同环境的配置 maven-assembly-plu ...

  7. SpringBoot打包成war

    关于SpringBoot打成jar包以及jar包如何在Linux持久运行,我在前面已经说过了,所以本次不再赘述. 关于SpringBoot打包成war,其实步骤特别简单,如下图所示(如果是jar,通常 ...

  8. springboot打包去除资源文件,启动时指定配置文件位置,使用log4j2替换默认logback

    springboot打包时,去掉资源文件 <build> <resources> <resource> <directory>src/main/reso ...

  9. 操作系统-容器-Docker:如何将应用打包成为 Docker 镜像?

    ylbtech-操作系统-容器-Docker:如何将应用打包成为 Docker 镜像? 1.返回顶部 1. 虽然 DockerHub 提供了大量的镜像,但是由于企业环境的多样性,并不是每个应用都能在 ...

随机推荐

  1. vue ele table表格 设置只能勾选一个

    table 更改属性设置: <el-table ref="multipleTable" :data="tableData" tooltip-effect= ...

  2. mini-ndn0.5.0 安装教程 (避免踩坑)

    写在前面 首先需要确定一些配置,因为在安装的过程中需要编译一些内容,所以需要提前准备好. 本人之前ubuntu系统可能比较乱,在尝试很多次安装后,仍然失败,所以就直接重装了一下.说一下我自己的一些配置 ...

  3. Kubernetes 组件简介

    关于Kubernetes是什么??? Kubernetes是致力于提供跨主机集群的自动部署.扩展.高可用以及运行应用程序容器的平台. Kubernets集群组成有哪些??? k8s由master和no ...

  4. wrap()包裹被选元素的内容

    <!doctype html><html><head><meta charset="utf-8"><title>修改代码 ...

  5. HearthbuddyHelper已经开源

    https://github.com/V-arc/HearthbuddyHelper 只是为了稳定,没耗时多久写的一个中控,只是在逐渐堆加,并未进行重构. 通过写这个感受到自己对异步和wpf的理解还有 ...

  6. Linux find命令实例教程 15个find命令用法

    除了在一个目录结构下查找文件这种基本的操作,你还可以用find命令实现一些实用的操作,使你的命令行之旅更加简易.本文将介绍15种无论是于新手还是老鸟都非常有用的Linux find命令.首先,在你的h ...

  7. RocketMQ详解(三)启动运行原理

    专题目录 RocketMQ详解(一)原理概览 RocketMQ详解(二)安装使用详解 RocketMQ详解(三)启动运行原理 RocketMQ详解(四)核心设计原理 RocketMQ详解(五)总结提高 ...

  8. liunx常见指令

    linux目录结构 bin:存储普通命令 sbin:存储超级命令 home:存储普通用户 root:存储超级用户 usr /usr/local:下存储数据或软件,通常软件都放在其中 tmp:临时目录 ...

  9. select后给字段起别名,where和group后不能用,但having后可以

    为什么mysql having的条件表达式可以直接使用select后的别名? SQL语句的语法顺序: FROM -> WHERE -> GROUP BY -> HAVING -> ...

  10. python+echarts+flask实现对全国疫情数据的爬取并可视化展示

    用Python进行数据爬取并存储到数据库,3.15学习总结(Python爬取网站数据并存入数据库) - 天岁 - 博客园 (cnblogs.com) 通过echarts+flask实现数据的可视化展示 ...