idea上运行springboot&docker

idea上运行springboot&docker

絮絮叨叨:说实话已经很久不来CSDN上写些什么了,有时候自己做做笔记,有时候工作太忙又忘记了。分享的精神居然被我抛弃了,总是到准备换工作的时候才想起来整理整理,回头看发现自己做的东西确实好杂……好了,下面开始今天的主题。(ps:csdn的markdown没以前好使了?)

环境准备

  1. java:这个就不多说了,网上安装教程很多,基本都是ok,没有问题的,照着操作就是了
  1. idea:官网安装,之后试用就行,然后戳这个链接,照着来就行了,美滋滋
  1. docker:这里说的是插件,不是别的,idea-setting-plugins-搜索框直接搜,安装-重启就行了
  1. 服务器docker:安装就不说了,windows没试过,linux的需要修改配置,目的就是允许远程访问,开放2375端口来允许开发机连接服务器的docker,如下:
  • root权限编辑vi /lib/systemd/system/docker.service
  • 找到ExecStart开头的这一行,替换保存即可 ExecStart=/usr/bin/dockerd -H tcp://tcp://0.0.0.0:2375 -H unix://var/run/docker.sock --containerd=/run/containerd/containerd.sock
  • 加载docker配置systemctl daemon-reload
  • 重启服务器的dockersystemctl restart docker
  • 完事儿

环境验证

怎么验证真的能远程访问?
IDEA–setting–Build,Excution,Deployment–Docker添加一个,名字随便取,然后在TcpSocket的Engine Api Url里填上"tcp://ip:2375",下边会告诉你连接是否成功。
在这里插入图片描述

springboot&docker运行

  1. springboot编码

其实到这里才真的开始编码,新建一个springboot的工程,添加依赖,写个简单的启动类:

@RestController
@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})
public class DataManagerApplication {
    @RequestMapping("/")
    public static String index(){
        return "hello!this is docker;";
    }
    public static void main(String[] args) {
        SpringApplication.run(DataManagerApplication.class, args);
    }
}

配置文件:

server.port=8080
server.servlet.context-path= /demo
  1. dockerfile编写

写过dockerfile的人肯定不会对这个陌生,如果只是整个java环境起个简单的springboot没有问题的

#指定基础镜像,在其上进行定制
FROM java:8

#这里的 /tmp 目录就会在运行时自动挂载为匿名卷,任何向 /tmp 中写入的信息都不会记录进容器存储层
VOLUME /tmp

#复制上下文目录下的target/demo-1.0.0.jar 到容器里
ADD target/docker-1.0-SNAPSHOT.jar app.jar

#声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务
EXPOSE 8080

#指定容器启动程序及参数   <ENTRYPOINT> "<CMD>"
ENTRYPOINT ["java","-jar","/app.jar"]

注意dockerfile的位置,在配置的时候是会要指定的,并且dockerfile和jar包的位置也要注意

  1. 运行

指定dockerfile文件位置以及端口号映射镜像名称执行命令啥的,之后直接运行,就会自动清理、打包并部署到服务器上
在这里插入图片描述

  1. 收尾

运行起来基本没啥问题,而且之前已经存在同名的镜像会自动移除掉保证环境不会太多镜像,感觉idea的这个docker可视化工具不错。后边会再说一下遇到的几个小问题。
在这里插入图片描述

在这里插入图片描述

两个小问题

  • docker运行spring boot 包镜像出现no main manifest attribute问题(注意:尽量把这个plugin放在build的第一个)
<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <includeSystemScope>true</includeSystemScope>
                    <mainClass>demo.test.DataManagerApplication</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
  • 网上有人提到运行docker使用docker插件的,建议先不要使用,如下:
  <groupId>com.spotify</groupId>
  <artifactId>docker-maven-plugin</artifactId>
  <version>1.0.0</version>

我看了下maven仓库以及github,上边那个好像过期了已经,不推荐使用,而且依赖也下不下来了。最新的可以考虑下使用这个:

   <groupId>com.spotify</groupId>
   <artifactId>dockerfile-maven-plugin</artifactId>
   <version>1.4.13</version>

完结撒花
2021年2月4日凌晨:争取以后多数出点文字,沉淀下来总结一下,加油!
主要当自己笔记备忘用,会比较零散

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值