idea创建SpringBoot项目部署到远程docker

2022-08-27 11:15:33

idea创建的Springboot项目部署到远程docker
虚拟机的系统为centos7
一、安装docker
一种方法为:
[xxx@root]# yum install docker(这种比较简单)
第二种方法:自定义安装docker版本
1.卸载旧版本(如果安装过旧版本的话)
[xxx@root]# yum remove docker docker-common docker-selinux docker-engine
2.安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
[xxx@root]# yum install -y yum-utils device-mapper-persistent-data lvm2 (感觉这步不执行也行)
3.设置yum源
[xxx@root]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
4.可以查看所有仓库中所有docker版本,并选择特定版本安装
[xxx@root]# yum list docker-ce --showduplicates | sort -r
5.安装指定版本
[xxx@root]# yum install docker-ce-17.12.0.ce

二、给docker开启远程访问
1.修改docker配置文件
[xxx@root]#vi /usr/lib/systemd/system/docker.service

修改

ExecStart=/usr/bin/dockerd

#centos设置:

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

#Ubunt设置:

ExecStart=/usr/bin/dockerd-H fd:// -H tcp://0.0.0.0:2375

保存退出,这一步是将docker映射到虚拟机2375端口
2.重新加载配置文件
[xxx@root]# systemctl daemon-reload
3.启动
/重启docker
[xxx@root]# systemctl
start/restart docker
4.
检验是否安装成功
[xxx@root]# netstat -
na|grep 2375或者netstat -anp|grep 2375
显示docker正在监听2375端口

5、若idea连不上docker,但是能相互ping通,可能是防火墙的原因

禁用firewalld服务:

systemctl disable firewalld

systemctl stop firewalld

然后重启docker:systemctl restart docker

  • 下载idea支持的dock插件包
    1.地址为https://plugins.jetbrains.com/plugin/7724-docker-integration注意不是越高越好要看自己的idea版本,与自己版本发布时间接近靠后点就行

    2.打开idea
    file-->setting-->Plugins-->install plugin from disk(在下面)-->选着你下下来的压缩包(红色说明不行,换个版本试试)

    3.设置docker
    file-->setting-->Build,Execution,Deployment-->docker-->填写name,选择tcp socket填写Engine API URL为:tcp://192.168.44.104:2375-->点击apply挨着上面框会提示Connection successful
    ,如图



4.编写Dockfile文件
FROMfrolvlad/alpine-oraclejdk8:slim
VOLUME/tmp
ADD/target/eureka_server-0.0.1-SNAPSHOT.jar app.jar
RUN
bash -c 'touch /app.jar'
ENVJAVA_OPTS=""
ENTRYPOINT[ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]


以下是命令说明
FROMfrolvlad/alpine-oraclejdk8:指Docker Hub上官方提供的java镜像,有了这个基础镜像后,Dockerfile可以通过FROM指令直接获取它的状态——也就是在容器中java是已经安装的,接下来通过自定义的命令来运行Spring Boot应用。
VOLUME/tmp:创建/tmp目录并持久化到Docker数据文件夹,因为Spring Boot使用的内嵌Tomcat容器默认使用/tmp作为工作目录。
ADDeureka_server-0.0.1-SNAPSHOT.jar app.jar:将应用jar包复制到/app.jar
ENTRYPOINT:表示容器运行后默认执行的命令

5.设置项目运行容器
Edit Configurations(调试旁边那个倒三角)-->点击绿色的+号-->选择docker-->docker image-->填写name,指定创建的Dockerfile,image tag,Container name-->点击最下面绿色的+号-->填写clean package(运行的时候自动会执行clean和package两个命令,并上传镜像到远程docker)

  1. 远程docker上安装jdk
    1)停用docker
    [xxx@root]# systemctl stop docker
    2)设置国内镜像源,国外的太慢或者访问不到
    ,设置加速器(官网的中国加速器、阿里云加速器、DaoCloud加速器等,这里配官网的中国加速器)
    [xxx@rot]vim /usr/lib/systemd/system/docker.service
    添加--registry-mirror=https://registry.docker-cn.com

完整的为:ExecStart=/usr/bin/dockerd --registry-mirror=https://registry.docker-cn.com -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
3)重新加载配置文件
[xxx@root]# systemctl daemon-reload
4)启动docker
[xxx@root]# systemctl start docker
5)查询要下载的jdk
[xxx@root]# docker search frolvlad
6)下载jdk
[xxx@root]# docker pull frolvlad/alpine-oraclejdk8

  • 选择docker,点击运行
    idea的docker窗口会运行Dockerfile上的命令
    执行完成后在虚拟机中查看上传的docker image
    [xxx@root]# docker images
    然后启动这个镜像
    [xxx@root]# docker run -it -p 8716:8716 cloud:latest /bin/bash &
    说明-p是映射端口到虚拟机,前面是虚拟机的端口,后面的是容器的端口,将8716映射到虚拟机,&是放大后台去执行,这样就可以在本地电脑上访问了
    http:192.168.44.104:8716/    就会出现eureka_server的首页了

扩展
启动docker平台:
[xxx@root# systemctl start docker   #启动 docker 服务
[xxx@root# systemctl enable docker  #设置开机启劢 docker 服务
[xxx@root# docker version   #显示 Docker 版本信息
[xxx@root# docker info  #查看 docker 信息(确认服务运行)显示 Docker 系统信息,包括镜像和容器数。

访问正在运行的 container 容器实例 .
语法: docker exec -it <container id | name> /bin/bash
[xxx@root]# docker exec -it 87fadc0249a9 /bin/bash  #进入容器

删除镜像
[xxx@root]# docker  rmi   image_name/ID
若要删除所有的image, 使用命令:
[xxx@root]# docker rmi  $( docker  images -q )

根据容器当前状态做一个 image镜像:
语法: docker commit <container的ID> <image_name> 例
[xxx@root]# docker commit  1d3563200047 centos:nmap
第二种方法是编写Dockerfile的形式(这个就不贴了,可以百度有很多)

删除指定 container : rm
[xxx@root]# docker rm 1a63ddea6571
解决:你可以先把容器1a63ddea6571 关闭,然后再删除戒加-f 强制删除
[xxx@root]# docker rm -f 1a63ddea6571

查看所有的容器
[xxx@root]# docker ps -a
查看容器的日志
[xxx@root]# docker logs c4a213627f1b

  • 作者:皮特老白
  • 原文链接:https://blog.csdn.net/dw888888/article/details/93756927
    更新时间:2022-08-27 11:15:33