idea 一键将spring boot 打包部署到docker并运行

335 阅读1分钟

环境

Linux:Ubuntu 20.4 docker:20.10 java:jdk8 + mvn 3.8 + idea 2021.2

1.在linux中安装docker

参考docker官方教程 ###1.1卸载旧版本 $ sudo apt-get remove docker docker-engine docker.io containerd runc ###1.2更新apt包索引并安装包以允许apt通过 HTTPS 使用存储库:

$ sudo apt-get update
$ sudo apt-get install \
      apt-transport-https \
      ca-certificates \
      curl \
      gnupg \
      lsb-release

###1.3 安装最新版本的Docker Engine和containerd $ sudo apt-get install docker-ce docker-ce-cli containerd.io ###1.4 查看docker版本 $ docker -v 结果

这里应该会报错说权限不够使用 sudo docker -v 可以,但是以后使用会很麻烦,就需要将当前用户添加到docker组中就可以了

$ sudo groupadd docker #添加docker用户组
$ sudo gpasswd -a $USER docker #将登陆用户加入到docker用户组中
$ newgrp docker #更新用户组

2.配置docker远程端口

2.1 修改docker配置文件

修改/usr/lib/systemd/system/docker.service文件在 ExecStart=/usr/bin/dockerd 后添加 -H tcp://0.0.0.0:2375 修改前: image 修改后: image

2.2 配置完成后,保存,然后重启 Docker

$ systemctl daemon-reload
$ service docker restart

3.IDEA中docker配置

如下图将Linux的IP地址和刚配置的远程端口配置好,看到链接成功的字样就可以里 image

如果此处不行需要查看防火墙是否开放了此端口,我这里直接关闭了防火墙。

$ sudo ufw disable # 关闭防火墙
$ sudo ufw status # 查看防火墙状态

4.创建springboot项目这里不在多说,然后就是创建Dockerfile文件

#使用jdk8作为基础镜像
FROM java:8
#指定作者
MAINTAINER Lee
#暴漏容器的8080端口 -P 是用
#EXPOSE 8080
#将复制target文件中的jar为容器中的test.jar,相当于拷贝到容器中取了个别名
ADD target/*.jar /test.jar
#创建一个新的容器并在新的容器中运行命令
RUN bash -c 'touch /test.jar'
#设置时区 根据情况看是否需要
#ENV TZ=PRC
#RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
#相当于在容器中用cmd命令执行jar包  指定外部配置文件
ENTRYPOINT ["java","-jar","/test.jar"]

5. 配置dockerfile

####端口绑定相当于docker run -p 的作用将容器的端口映射到主机不然会拒绝链接。 ####执行前要选择添加maven,是运行前打包项目,不然每次运行都需要手动打包非常麻烦。 然后运行这个docker就可以看到下图: ####可以看到镜像docker-demo:v1.0.0已经在Linux的镜像仓库中了,容器docker-test也已经运行了。 这样就可以了。