最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot項(xiàng)目中使用docker進(jìn)行遠(yuǎn)程部署的實(shí)現(xiàn)

 更新時(shí)間:2025年01月08日 09:57:44   作者:jasnet_u  
本文主要介紹了在Spring Boot項(xiàng)目中使用Docker進(jìn)行遠(yuǎn)程部署,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

springboot項(xiàng)目中使用docker進(jìn)行遠(yuǎn)程部署,這個(gè)過(guò)程,其實(shí)就是先將項(xiàng)目打包為springboot的jar包,再遠(yuǎn)程連接到docker主機(jī)上將springboot的jar包構(gòu)建為docker鏡像。最后運(yùn)行docker run [鏡像名稱] ,以docker容器方式運(yùn)行我們的應(yīng)用。 

方式一: idea中安裝docker 集成插件,進(jìn)行docker遠(yuǎn)程部署。 

安裝完成后,重啟idea。 在setting--》build,execution,deployment--》下找到docker ,添加/配置一個(gè)docker主機(jī)(可以是遠(yuǎn)程的docker主機(jī))。當(dāng)然,需要注意的是,遠(yuǎn)程主機(jī)上的必須有安裝docker,并且開(kāi)啟了docker的遠(yuǎn)程訪問(wèn)。

新建一個(gè)簡(jiǎn)單的springboot項(xiàng)目 。new --》project --》spring initializr --》勾選 web ,devtool即可,項(xiàng)目名稱填寫(xiě)為 docker-demo1 。

springboot啟動(dòng)類:

package com.tingcream.dockerdemo1;
 
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
import java.text.SimpleDateFormat;
import java.util.Date;
 
@SpringBootApplication
@RestController
public class DockerDemo1Application {
    @Value("${spring.application.name}")
    private  String applicationName;
    @Value("${server.port}")
    private  String port;
 
    public static void main(String[] args) {
        SpringApplication.run(DockerDemo1Application.class, args);
    }
 
    @RequestMapping("/")
    public String index(){
        String date= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
        System.out.println("當(dāng)前時(shí)間:"+date);
        return  "hello: "+applicationName+",端口為:"
                +port+",當(dāng)前時(shí)間為:"+date;
    }
 
}

application.yml

server:
  port: 8081

spring:
  application:
    name: docker-demo1

#日志
logging:
  level:
    root: INFO
    org.springframework.web: INFO
    org.springframework.jdbc: debug
    com.tingcream: DEBUG
  file: /log/docker-demo1.log

在項(xiàng)目根目錄中,創(chuàng)建一個(gè)Dockerfile文件,內(nèi)容如下:

FROM    frolvlad/alpine-oraclejre8
VOLUME /tmp

# 配置環(huán)境變量
ENV LANG="en_US.UTF-8" \
    LANGUAGE="en_US:en"  \
    LC_ALL="en_US.UTF-8"


# 復(fù)制jar包
ADD target/docker-demo1.jar   /app.jar

# 修改容器時(shí)區(qū)為北京時(shí)間
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories &&\
    apk --no-cache add tzdata  && \
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo "Asia/Shanghai" > /etc/timezone

#聲明要暴露的端口
EXPOSE 8081  5005

#入口
#ENTRYPOINT ["java","-Dfile.encoding=UTF-8","-jar","/app.jar"]

#入口,開(kāi)啟遠(yuǎn)程調(diào)試(5005端口)
ENTRYPOINT ["java","-Dfile.encoding=UTF-8","-Djava.security.egd=file:/dev/./urandom",\
   "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005","-jar","/app.jar"]

在idea中,編輯一個(gè)configuration (run/debug--》edit configuration)  

完成后,我們編寫(xiě)好項(xiàng)目代碼,先執(zhí)行mvn clean package ,將項(xiàng)目打包,再找到docker-demo1 的運(yùn)行選項(xiàng) ,點(diǎn)擊綠色三角啟動(dòng)按鈕執(zhí)行,即可將我們的springboot jar包,并自動(dòng)構(gòu)建docker鏡像上傳到我們的指定的docker主機(jī)上。

方式二 :pom中引入一個(gè)docker插件進(jìn)行項(xiàng)目docker遠(yuǎn)程部署

1、pom.xml   配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.7.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>
  <groupId>com.tingcream</groupId>
  <artifactId>docker-demo1</artifactId>
  <version>0.1</version>
  <name>docker-demo1</name>
  <description>Demo project for Spring Boot</description>

  <properties>
    <java.version>1.8</java.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
      <scope>runtime</scope>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <finalName>docker-demo1</finalName>
    <resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*</include>
        </includes>
        <excludes>
          <exclude>**/*.java</exclude>
        </excludes>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*</include>
        </includes>
        <excludes>
          <exclude>**/*.java</exclude>
        </excludes>
      </resource>
    </resources>

    <plugins>
       <!--springboot 打execute jar包-->
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>

       <!--JDK8 編譯-->
      <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <configuration>
        <target>1.8</target>
        <source>1.8</source>
        <encoding>utf-8</encoding>
      </configuration>
      </plugin>



      <!--docker 的maven插件 -->
      <plugin>
        <groupId>com.spotify</groupId>
        <artifactId>docker-maven-plugin</artifactId>
          <version>0.4.13</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>build</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <!--docker主機(jī)的地址-->
          <dockerHost>http://192.168.11.10:2375</dockerHost>
          <!--打包的鏡像名稱-->
          <imageName>jellyflu/${project.build.finalName}:${version}</imageName>
          <!--Dockerfile所在的目錄-->
           <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
        <!--<dockerDirectory>${project.basedir}</dockerDirectory>-->
         <resources>
            <resource>
              <targetPath>/</targetPath>
              <directory>${project.build.directory}</directory>
              <include>${project.build.finalName}.jar</include>
            </resource>
          </resources>
        </configuration>
      </plugin>

    </plugins>
  </build>

</project>

如上,其中最主要的就是引入了一個(gè)docker 的maven插件包,該插件包會(huì)將我們的docker build命令綁定到maven的package執(zhí)行階段。

也就是說(shuō),當(dāng)我們?cè)陧?xiàng)目中執(zhí)行mvn clean package 時(shí),會(huì)先自動(dòng)打包(springboot 包),再遠(yuǎn)程連接到docker主機(jī)上進(jìn)行鏡像的構(gòu)建。

2、在項(xiàng)目根src/main中創(chuàng)建docker目錄,里面再新建一個(gè)Dockerfile文件。

Dockerfile文件的內(nèi)容如下: 

FROM    frolvlad/alpine-oraclejre8
VOLUME /tmp
 
ENV LANG="en_US.UTF-8" \
    LANGUAGE="en_US:en"  \
    LC_ALL="en_US.UTF-8"
 
#ENV LANG en_US.UTF-8
#ENV LANGUAGE en_US:en
#ENV LC_ALL en_US.UTF-8
 
ADD  docker-demo1.jar   /app.jar
 
# 修改容器時(shí)區(qū)為北京時(shí)間
RUN  sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories &&\
    apk --no-cache add tzdata  && \
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo "Asia/Shanghai" > /etc/timezone
 
#聲明要暴露的端口
EXPOSE 8081  5005
 
#入口
#ENTRYPOINT ["java","-Dfile.encoding=UTF-8","-jar","/app.jar"]
#入口,開(kāi)啟遠(yuǎn)程調(diào)試
ENTRYPOINT ["java","-Dfile.encoding=UTF-8","-Djava.security.egd=file:/dev/./urandom",\
   "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005","-jar","/app.jar"]

3、編寫(xiě)好項(xiàng)目代碼后,運(yùn)行mvn clean package 即可自動(dòng)將項(xiàng)目打包,并將springboot包構(gòu)建為docker鏡像。 注意這時(shí)鏡像并沒(méi)有自動(dòng)run出一個(gè)容器,需要我們手動(dòng)到docker主機(jī)上執(zhí)行docker run命令,如

docker run -d -p 8081:8081 -p 5005:5005  -v /log:/log --name docker-demo1   jellyflu/docker-demo1:0.1 

查看容器運(yùn)行日志 :

docker  logs -f  docker-demo1  或者 tail -f /log/docker-demo1.log  

附: docker主機(jī)上如何開(kāi)啟遠(yuǎn)程訪問(wèn) 

1、修改docker.service配置文件
 vi /usr/lib/systemd/system/docker.service 

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

:x保存退出

2、重啟docker的守護(hù)進(jìn)程

systemctl daemon-reload
systemctl restart docker

到此這篇關(guān)于springboot項(xiàng)目中使用docker進(jìn)行遠(yuǎn)程部署的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)springboot docker遠(yuǎn)程部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Hibernate的延遲加載的項(xiàng)目實(shí)踐

    Hibernate的延遲加載的項(xiàng)目實(shí)踐

    Hibernate延遲加載(Lazy Loading)是一種性能優(yōu)化技術(shù),僅在需要時(shí)加載關(guān)聯(lián)數(shù)據(jù),減少初始查詢和內(nèi)存消耗,本文就來(lái)介紹一下Hibernate 延遲加載的實(shí)現(xiàn),感興趣的可以了解一下
    2026-01-01
  • Springboot之@Async不執(zhí)行原因及分析

    Springboot之@Async不執(zhí)行原因及分析

    這篇文章主要介紹了Springboot之@Async不執(zhí)行原因及分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • struts2開(kāi)發(fā)流程及詳細(xì)配置

    struts2開(kāi)發(fā)流程及詳細(xì)配置

    這篇文章主要介紹了struts2開(kāi)發(fā)流程及詳細(xì)配置,步驟比較詳細(xì),具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-09-09
  • java8 filter方法、Predicate接口的使用方式

    java8 filter方法、Predicate接口的使用方式

    這篇文章主要介紹了java8 filter方法、Predicate接口的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • JSP request.setAttribute()詳解及實(shí)例

    JSP request.setAttribute()詳解及實(shí)例

    這篇文章主要介紹了 javascript request.setAttribute()詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • Java SpringSecurity入門案例與基本原理詳解

    Java SpringSecurity入門案例與基本原理詳解

    這篇文章主要介紹了java中Spring Security的實(shí)例詳解的相關(guān)資料,spring security是一個(gè)多方面的安全認(rèn)證框架,提供了基于JavaEE規(guī)范的完整的安全認(rèn)證解決方案,需要的朋友可以參考下
    2021-09-09
  • 一個(gè)簡(jiǎn)陋的java圖書(shū)管理系統(tǒng)

    一個(gè)簡(jiǎn)陋的java圖書(shū)管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了一個(gè)簡(jiǎn)陋的java圖書(shū)管理系統(tǒng),簡(jiǎn)單的實(shí)現(xiàn)功能測(cè)試,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-07-07
  • 解決spring cloud gateway 獲取body內(nèi)容并修改的問(wèn)題

    解決spring cloud gateway 獲取body內(nèi)容并修改的問(wèn)題

    這篇文章主要介紹了解決spring cloud gateway 獲取body內(nèi)容并修改的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • 關(guān)于@Controller和@Restcontroller的那點(diǎn)奇葩事

    關(guān)于@Controller和@Restcontroller的那點(diǎn)奇葩事

    這篇文章主要介紹了關(guān)于@Controller和@Restcontroller的那點(diǎn)奇葩事,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java如何實(shí)現(xiàn)海量數(shù)據(jù)判重

    Java如何實(shí)現(xiàn)海量數(shù)據(jù)判重

    在海量數(shù)據(jù)如何確定一個(gè)值是否存在?這是一道非常經(jīng)典的面試場(chǎng)景題,那怎么回答這個(gè)問(wèn)題呢?下面小編就來(lái)和大家詳細(xì)的聊一聊,感興趣的可以一起學(xué)習(xí)一下
    2023-09-09

最新評(píng)論

安西县| 闽清县| 新民市| 和林格尔县| 九江市| 静海县| 高碑店市| 广饶县| 山阳县| 黄骅市| 绥芬河市| 浙江省| 宝丰县| 郴州市| 武功县| 体育| 正蓝旗| 永丰县| 静安区| 花垣县| 类乌齐县| 新巴尔虎右旗| 靖州| 台南县| 温州市| 神农架林区| 临洮县| 海丰县| 玉山县| 霍山县| 方正县| 汉沽区| 湟中县| 鹤山市| 松江区| 疏附县| 霞浦县| 顺平县| 宜都市| 墨江| 鲁山县|