idea使用docker实现自动部署项目到云服务器

    技术2022-07-29  87

    1、安装docker

     1.1、查看是否已经安装docker

    yum list installed | grep docker

     1.2、安装docker

    yum -y install docker

    -y   表示不询问安装,直到安装成功

     1.3、设置开机自启动

    systemctl enable docker

     1.4、启动docker

    systemctl start docker

     1.5、查看docker运行状态

    systemctl status docker

    2、docker设置远程访问

    2.1、修改docker.service文件,添加2375端口有监听

    vi /usr/lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd-current -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock \

    2.2、重载docker守护线程并重启docker

    systemctl daemon-reload systemctl start docker

    3、idea安装docker插件

    3.1、在File --> Settings --> Plugins 在输入框中搜索Docker,选择并安装。安装完成后重启idea。

    3.2、配置docker

    在File–> Settings–>Build,Execution,Deployment中找到Docker

    新建一个docker实例,然后在Engine API URL中将docker所在ip端口号填上,填完如果下面显示Connection successful证明连接docker成功。如果失败,可能是我们上一步docker开启远程连接未成功。

    创建完成能在主界面看到以下这个

    4、新建项目,并配置

    File–> New -->Project --> Spring Initializr, 新建一个spring的项目,具体步骤就不演示了。

    修改项目的pom.xml文件,在plugins里面添加docker-maven-plugin插件 :

    <!--使用docker-maven-plugin插件--> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</version> <!--将插件绑定在某个phase执行--> <executions> <execution> <id>build-image</id> <!--将插件绑定在package这个phase上。也就是说, 用户只需执行mvn package ,就会自动执行mvn docker:build--> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </executions> <configuration> <!--指定生成的镜像名,这里是我们的项目名--> <imageName>${project.artifactId}</imageName> <!--指定标签 这里指定的是镜像的版本,我们默认版本是latest--> <imageTags> <imageTag>latest</imageTag> </imageTags> <!-- 指定我们项目中Dockerfile文件的路径--> <dockerDirectory>${project.basedir}/src/main/resources</dockerDirectory> <!--指定远程docker 地址--> <dockerHost>http://xxx.xxx.xxx.xxx:2375</dockerHost> <!-- 这里是复制 jar 包到 docker 容器指定目录配置 --> <resources> <resource> <targetPath>/</targetPath> <!--jar包所在的路径 此处配置的即对应项目中target目录--> <directory>${project.build.directory}</directory> <!-- 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 --> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin>

    添加相关的项目配置信息

    server.port=8433

    在src/java/resources下面添加Dockerfile文件

    文件的大致内容

    #指定基础镜像,在其上进行定制 FROM java:8 #维护者信息 MAINTAINER xx <xxx@xxx.com> #这里的 /tmp 目录就会在运行时自动挂载为匿名卷,任何向 /tmp 中写入的信息都不会记录进容器存储层 VOLUME /tmp #添加打包出来的jar包到容器里面 ADD *.jar app.jar #声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务 EXPOSE 8433 #指定容器启动程序及参数 <ENTRYPOINT> "<CMD>" ENTRYPOINT ["java","-jar","app.jar"]

    5、打包项目并部署发布

    使用maven的package打包,因为在pom.xml里面配置了的,打包的时候会自动使用Dockerfile文件进行构建

     

     打包完成会在控制套看到打包成功的信息

     

     docker镜像里面也多了***:latest镜像,点击鼠标右键创建容器

     

    这里是使用服务器的ip和8433端口去访问容器的8433端口,前面的端口号是外部端口,后面的8433是容器端口

     

    选中刚新建的容器,点击右键,选择Start

     

    会看到运行成功的信息

    页面访问服务器ip:端口能够访问到项目的内容

    6、修改项目,设置自动部署

    修改启动项配置Before launch:Activate tool window,新增Run Maven Gold

    在Command line 中添加一个命令 package。配置完成后保存。

     

    以后每次启动项目都会自动的package,并把jar包生成镜像文件启动

     

    参考:https://blog.csdn.net/qq_35976271/article/details/100287663

    Processed: 0.023, SQL: 9