发表于 2024-4-29 10:53

申请会员ID:4C6565

1、申 请 I D :4C6565
2、个人邮箱:4C6565@aliyun.com
3、原创技术文章

idea 一键将spring boot 打包部署到docker并运行
## 环境
Linux:Vmware 16.1 + Ubuntu 20.4
docker:20.10
java:jdk8 + mvn 3.8 + idea 2021.2
## 1.在linux中安装docker
参考(https://docs.docker.com/engine/install/ubuntu/)教程
###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
`
https://img2020.cnblogs.com/blog/1663778/202109/1663778-20210907141817141-699313228.png
#### 这里应该会报错说权限不够使用 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`
修改前:
https://img2020.cnblogs.com/blog/1663778/202109/1663778-20210907143143363-597994295.png
修改后:
https://img2020.cnblogs.com/blog/1663778/202109/1663778-20210907143257780-1417588967.png
### 2.2 配置完成后,保存,然后重启 Docker
```
$ systemctl daemon-reload
$ service docker restart
```
## 3.IDEA中docker配置
如下图将Linux的IP地址和刚配置的远程端口配置好,看到链接成功的字样就可以里
https://img2020.cnblogs.com/blog/1663778/202109/1663778-20210907143933800-1538070739.png
#### 如果此处不行需要查看防火墙是否开放了此端口,我这里直接关闭了防火墙。
```
$ sudo ufw disable # 关闭防火墙
$ sudo ufw status # 查看防火墙状态
```
## 4.创建springboot项目这里不在多说,然后就是创建Dockerfile文件
https://img2020.cnblogs.com/blog/1663778/202109/1663778-20210907144512592-396616439.png
```
#使用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
https://img2020.cnblogs.com/blog/1663778/202109/1663778-20210907144824405-1643098560.png
https://img2020.cnblogs.com/blog/1663778/202109/1663778-20210907144808726-1784967095.png
https://img2020.cnblogs.com/blog/1663778/202109/1663778-20210907145123050-657690034.png
####端口绑定相当于docker run -p 的作用将容器的端口映射到主机不然会拒绝链接。
####执行前要选择添加maven,是运行前打包项目,不然每次运行都需要手动打包非常麻烦。
https://img2020.cnblogs.com/blog/1663778/202109/1663778-20210907145206510-317027873.png
https://img2020.cnblogs.com/blog/1663778/202109/1663778-20210907145221131-1713203280.png
然后运行这个docker就可以看到下图:
https://img2020.cnblogs.com/blog/1663778/202109/1663778-20210907145325544-2038076860.png
####可以看到镜像docker-demo:v1.0.0已经在Linux的镜像仓库中了,容器docker-test也已经运行了。
https://img2020.cnblogs.com/blog/1663778/202109/1663778-20210907150438258-553702615.png
这样就可以了。

Hmily 发表于 2024-4-29 15:19

抱歉,未能达到申请要求,申请不通过,可以关注论坛官方微信(吾爱破解论坛),等待开放注册通知。
页: [1]
查看完整版本: 申请会员ID:4C6565