IDEA中通过docker插件部署springboot项目

Stella981
• 阅读 807

docker 相关部分

windows 系统

安装/升级Docker客户端

对于Windows 10专业版以下的用户,推荐使用Docker Toolbox

Windows安装文件:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/

对于Windows 10专业版以上的用户 推荐使用Docker for Windows

Windows安装文件:http://mirrors.aliyun.com/docker-toolbox/windows/docker-for-windows/

配置镜像加速器

针对安装了Docker Toolbox的用户,您可以参考以下配置步骤:

创建一台安装有Docker环境的Linux虚拟机,指定机器名称为default,同时配置Docker加速器地址。

docker-machine create --engine-registry-mirror=https://*****.mirror.aliyuncs.com -d virtualbox default

查看机器的环境配置,并配置到本地,并通过Docker客户端访问Docker服务。

docker-machine env default
eval "$(docker-machine env default)"
docker info

针对安装了Docker for Windows的用户,您可以参考以下配置步骤:

在系统右下角托盘图标内右键菜单选择 Settings,打开配置窗口后左侧导航菜单选择 Docker Daemon。编辑窗口内的JSON串,填写下方加速器地址:

{
  "registry-mirrors": ["https://*****.mirror.aliyuncs.com"]
}

8.png

编辑完成后点击 Apply 保存按钮,等待Docker重启并应用配置的镜像加速器。注意Docker for WindowsDocker Toolbox互不兼容,如果同时安装两者的话,需要使用hyperv的参数启动。

docker-machine create --engine-registry-mirror=https://*****.mirror.aliyuncs.com -d hyperv default

Docker for Windows 有两种运行模式,一种运行Windows相关容器,一种运行传统的Linux容器。同一时间只能选择一种模式运行。

配置远程访问

打开docker的设置界面,找到General,在里面找到Expose daemon on tcp://localhost:2375 without TLS选项,打上勾,即可进行本地或远程API调用。

1.png

linux 系统

安装/升级Docker客户端

更新apt软件包索引。

sudo apt-get update

安装最新版本的Docker CE,或者转到下一步安装特定版本:

sudo apt-get install docker-ce

配置镜像加速器

您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json

在文件中加入以下内容即可:

{
  "registry-mirrors": ["https://********.mirror.aliyuncs.com"]
}

重新启动

sudo systemctl daemon-reload
sudo systemctl restart docker

配置远程访问

编辑docker服务配置文件

sudo vim /lib/systemd/system/docker.service

找到如下配置

ExecStart=/usr/bin/dockerd

修改为

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

9.png

重启docker网络

sudo systemctl daemon-reload 

重启docker服务

sudo systemctl restart docker

测试

curl http://localhost:2375/verion

10.png

镜像加速地址,可以是阿里云的,这里以阿里云为例:

2.png

IntelliJ IDEA 相关

配置idea连接docker服务

安装idea的docker插件

setting中安装docker插件

3.png

等待安装完成重启idea

配置连接

重启完成后,我们打开settings可以看到docker

4.png

点击+,添加一个连接。

5.png

我们通过tcp的方式连接到linux或者windowsdocker服务。信息配置好后,idea会自动检测。然后会输出connection successful

然后再工具栏选择docker的窗口,点击运行

6.png

接下来我们在idea上面操作docker

7.png

项目相关

首先新建一个简单的springboot项目
在项目的pom.xml文件中加入以下代码:

<!--复制jar包到指定目录-->
<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <executions>
        <execution>
            <id>gen-webadmin</id>
            <phase>package</phase>
            <configuration>
                <tasks>
                    <copy todir="docker" file="target/${project.artifactId}-${project.version}.${project.packaging}" />
                </tasks>
            </configuration>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
</plugin>

17.png

在项目根目录下建立一个docker文件夹,在docker文件夹下新建一个Dockerfile文件,写入一下内容:

FROM java:8u111

VOLUME /tmp

ADD *.jar app.jar

EXPOSE 80

ENTRYPOINT ["java","-jar","/app.jar"]

# Ubuntu 时区
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

11.png

然后配置docker启动项
选择编辑:

12.png

添加一个启动项:

13.png

填写docker相关的参数:

14.png

在执行docker镜像之前需要把项目进行打包,所以在最下面的操作栏中加入maven打包相关的命令:

添加一个maven任务:

15.png

添加maven打包命令:

16.png

maven打包分为了几步:
第一步是清除上次编译或者打包的文件

18.png

第二步是对项目进行编译以及打成jar

19.png

第三步则是把打包好的jar文件移动到指定的docker文件夹,这样我们的docker对制作镜像时才能找到我们的jar文件,否则则会在制作过程中报错。

20.png

正常情况:

Deploying 'signin Dockerfile: docker/Dockerfile'...
Building image...
Step 1/6 : FROM java:8u111
 ---> d23bdf5b1b1b
Step 2/6 : VOLUME /tmp
 ---> Using cache
 ---> fca4a788f895
Step 3/6 : ADD *.jar app.jar
 ---> a7d47f6bf6ec
Step 4/6 : EXPOSE 80
 ---> Running in 7b57f4915a64
Removing intermediate container 7b57f4915a64
 ---> 8a893ebb3052
Step 5/6 : ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar", "--Dspring.config.location=application.yml"]
 ---> Running in 26ae8f5e5310
Removing intermediate container 26ae8f5e5310
 ---> 28cc02929af7
Step 6/6 : RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
 ---> Running in c0a1b980f7ca
Removing intermediate container c0a1b980f7ca
 ---> 22034793c303
Successfully built 22034793c303
Successfully tagged signin:latest
Creating container...
Container Id: 0cefcdae23b548d1cdc6865b31f4f4c841de3bed1e6667e64b6583be0b00fd22
Container name: 'signin'
Attaching to container 'signin'...
Starting container 'signin'
'signin Dockerfile: docker/Dockerfile' has been deployed successfully.

异常情况:

Deploying 'signin Dockerfile: docker/Dockerfile'...
Building image...
Step 1/6 : FROM java:8u111
 ---> d23bdf5b1b1b
Step 2/6 : VOLUME /tmp
 ---> Using cache
 ---> fca4a788f895
Step 3/6 : ADD *.jar app.jar
Error: ResponseItem.ErrorDetail[code=<null>,message=ADD failed: no source files were specified]
Failed to deploy 'signin Dockerfile: docker/Dockerfile': ADD failed: no source files were specified

docker启动完成

22.png

我们去linux上面查看一下:

docker ps -a

23.png

本文同步分享在 博客“吟风者”(JianShu)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这