一:基础准备

1.首先在linux服务器安装Docker环境,具体安装步骤及Docker使用参考官网或网络资料(这里重点是快速部署项目到Docker环境)

2.配置Docker远程连接端口

1.vim /usr/lib/systemd/system/docker.service
2.找到ExecStar 在后面添加 -H tcp://0.0.0.0:2375

3.重启Docker

 systemctl daemon-reload
systemctl start docker

4.如果防火墙已经打开则需要开放2375端口

firewall-cmd --zone=public --add-port=2375/tcp --permanent

5.Idea安装Docker插件并配置连接Docker

6.连接成功会列出远程的容器和镜像,并且可以直接右键快速启动、关闭、删除容器或镜像

二:构建Springboot项目

1.pom文件在plugin添加docker-maven-plugin、maven-antrun-plugin插件

<build>
<finalName>study-demo</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>application.properties</include>
<include>**/*.xml</include>
<include>**/*.json</include>
</includes>
</resource>
<resource>
<directory>src/main/java</directory>
<filtering>true</filtering>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<configuration>
<tasks>
<copy todir="src/main/docker" file="target/${project.build.finalName}.${project.packaging}"></copy>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

2.在src/main目录下创建docker目录,并创建Dockerfile文件

这里给出了一个Dockerfile几个重要指令比较详细的参考说明

FROM java:8

#维护者信息
MAINTAINER boris@email.com #添加元数据到镜像,LABEL是以键值对形式
LABEL maintainer="bo.zou <boris@email.com>"
LABEL copyright="2015 ~ 2020 www.boris.com Inc. All rights reserved."
LABEL version="1.0.0"
LABEL declaration="Boris Test Dockerfile" #ENV设置环境变量 timezone
ENV TIMEZONE Asia/Shanghai #设置容器的工作目录
# WORKDIR
#RUN指令:用于指定 docker build 过程中要运行的命令
RUN mkdir /usr/local/boris
WORKDIR /usr/local/boris #复制指令,从上下文目录中复制文件或者目录到容器里指定路径
#ADD 指令和 COPY 的使用格式一致(同样需求下,官方推荐使用 COPY)
#将jar包添加到容器中并更名为app.jar
COPY *.jar /usr/local/boris/app.jar #定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。
#可以在镜像中创建挂载点,只要通过该镜像创建的容器都有了挂载点
#作用是和docker run命令的-v是一样,将宿主机和容器的目录做映射
#区别是:通过 VOLUME 指令创建的挂载点,无法指定宿主机上对应的目录,是自动生成的。可以通过查看容器的信息查看到,例:docker inspect 容器ID
#VOLUME ["/usr/local/boris/dockerlog"] ###声明启动端口号
EXPOSE 8080 #CMD 和 ENTRYPOINT 在docker run 时运行(启动容器时执行),主要用来指定容器默认执行的命令.
#CMD作用:当Docker镜像被启动后Docker容器将会默认执行的命令,CMD 指令指定的程序会被 docker run 命令行参数中指定要运行的程序所覆盖
#ENTRYPOINT作用:类似于 CMD 指令,区别在于不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序
#一个Dockerfile中只能有一个CMD或ENTRYPOINT命令,多个仅最后一个生效。多数情况下它们应该是单独使用的。
#配合使用时:
#• 如果 ENTRYPOINT 使用了 shell 模式,CMD 指令会被忽略。
#• 如果 ENTRYPOINT 使用了 exec 模式,CMD 指定的内容被追加为 ENTRYPOINT 指定命令的参数。
#• 如果 ENTRYPOINT 使用了 exec 模式,CMD 也应该使用 exec 模式。
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","app.jar"]

3.创建springboot项目controller和启动类做测试

4.增加配置

说明:

Dockerfile:指定你的Dockerfile文件 

Image tag : 指定镜像名称和tag,冒号分隔

Bind ports : 绑定宿主机端口到容器内部端口。格式为[宿主机端口]:[容器内部端口]

Bind mounts : 将宿主机目录挂到到容器内部目录中。格式为[宿主机目录]:[容器内部目录]

Contaner name:取一个容器名称,不填默认会随机生成一个名称

5.打包并运行

6.成功,可以看到创建的容器和镜像并且运行成功

结束,EDN。

IDEA远程快速部署SpringBoot项目到Docker环境的更多相关文章

  1. mac和linux下使用Docker,部署SpringBoot项目到docker

    主要是看一下如何在linux及mac上安装docker,创建docker镜像,部署SpringBoot项目到docker,并借助于DaoCloud进行docker镜像下载加速等. 我用的电脑是mac, ...

  2. idea远程部署SpringBoot项目到Docker

    安装docker服务或者系统学习docker参考这篇文档:https://shimo.im/docs/fE0eJCx8IIojQXzB/ 1.配置docker的远程端口 vim /usr/lib/sy ...

  3. 利用 jrebel 热部署\远程调试\远程热部署 springboot项目 服务器上的代码

    首先要在eclipse 中启用 启用以后在 resource 中生成了 rebel-remote.xml 然后build,把生成的jar包放到服务器上. 然后用下面的命令启动 java -agentp ...

  4. 七. jenkins部署springboot项目(4)-linux环境--远程调试

    前提:linux环境,jenkins服务器和springboot服务器不在一台机器. linux环境,jenkins这里就不说了,主要说下和windows环境的不同. 1. jenkins服务器连接s ...

  5. 五. jenkins部署springboot项目(2)--windows环境--服务

    前提:jenkins和springboot运行在同一台机器 springboot 通过winsw部署为服务 winsw 下载地址:https://github.com/kohsuke/winsw/re ...

  6. 四. jenkins部署springboot项目(1)--window环境

    前提:jenkins和springboot运行在同一台机器 springboot项目使用git和maven jenkins所需的插件如Maven,Git等这里就不再详述. 1.jenkins配置git ...

  7. 六. jenkins部署springboot项目(3)--windows环境--远程windows server服务器

    前提:jenkins服务器和windows server服务器不在一台机器上 对于jenkins服务器上编译好的jar或war包如何推送到windows server服务器上. 参照网上的,在wind ...

  8. 提升10倍生产力:IDEA远程一键部署SpringBoot到Docker

    作者:陶章好 juejin.im/post/5d026212f265da1b8608828b 推荐阅读(点击即可跳转阅读) 1. SpringBoot内容聚合 2. 面试题内容聚合 3. 设计模式内容 ...

  9. Docker快速上手之部署SpringBoot项目

    Docker是基于Go语言实现的云开源项目. Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装.分发.部署.运行等生命周期 ...

随机推荐

  1. 基本的bash shell命令

    目录 基本的bash shell命令 启动shell shell提示符 基本的bash shell命令 启动shell GNU bash shell 能提供对Linux系统的交互式访问.它是作为普通程 ...

  2. VMware中Linux虚拟机与Windows主机共享文件夹

    VMware下Linux虚拟机与Windows主机共享文件夹 1. 安装vm-tool 2. 开启共享文件夹 虚拟机->设置->选项->共享文件夹"右边选择"总是 ...

  3. fastjson反序列化-JdbcRowSetImpl利用链

    fastjson反序列化-JdbcRowSetImpl利用链 JdbcRowSetImpl利用链 fastjson反序列化JdbcRowSetImpl - Afant1 - 博客园 (cnblogs. ...

  4. leetcode779 第k个语法符号。

    直接找规律. 第一行 0 第二行 01 第三行 0110 第四行 01101001 可以发现,第n行的数量比第n-1行多了一倍,并且前半部分是和第n-1行一样的,后半部分是前半部分"按位取反 ...

  5. xpath helper插件安装提示程序包无效

    参考链接:https://www.jianshu.com/p/b7d782ef81e0 刚学到爬虫,需要在Chrome浏览器安装xpath helper插件结果一直提示"程序包无效" ...

  6. 初学python-day3 列表

  7. 源码解析-Abp vNext丨LocalEventBus

    前言 基础篇已经更新完了,从本篇开始我们进入,中级篇(学习部分源代码)我会挑一些我个人认为比较重要的知识点结合部分开源项目进行源码讲解,咱们废话不说直接上车. Abp vNext的事件总线分2种,一种 ...

  8. 如何将jdk12的源码导入idea

    如何将jdk12的源码导入idea中 一 首先,在idea中新建一个java工程 接着,在本地找到jdk所在的文件目录,进入jdk目录,找到javasrc目录或者一个src.zip的压缩包, 在向下或 ...

  9. MVC中单选按钮的实现

    -------------控制器-------------- ViewBag.Kinds = SYS_Category.List(xxxxxxxxxxxxxxxxxxxxxxx); --------- ...

  10. hdu 5084 HeHe (观察思考题)

    题意: 给一个n行n列的矩阵M.这个矩阵M由2n-1数构成.分别是t1,t2,....t(2n-1). m个query.每个query形式:ri, ci. 第i个query的答案 ans[i]=E[( ...