<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          使用Docker部署SpringBoot項目

          共 3382字,需瀏覽 7分鐘

           ·

          2020-08-30 05:35

          點擊上方藍(lán)色字體,選擇“標(biāo)星公眾號”

          優(yōu)質(zhì)文章,第一時間送達(dá)

          ? 作者?|??LanceLi

          來源 |? urlify.cn/eQvaea ? ??

          66套java從入門到精通實戰(zhàn)課程分享?

          一、環(huán)境 | 步驟

          • 使用的虛擬機安裝Ubuntu20.04,Ubuntu里面安裝了docker,還需要安裝JDK和Maven

          • 在Win10上的Idea寫好一個SpringBoot的Demo項目打包后傳到Ubuntu中

          • 先用mvn package打包項目并運行 測試項目是否能成功跑起來

          • 最后用mvn package docker:build 打成Docker鏡像

          • 注意事項(看了其他的博客,然后打鏡像的時候報各種異常):

            • 項目名也就是artifactId最好也是小寫

            • docker鏡像名最好要小寫


          二、新建一個SpringBoot項目

          2.1pom.xml

          <parent>
          ????????<groupId>org.springframework.bootgroupId>
          ????????<artifactId>spring-boot-starter-parentartifactId>
          ????????<version>2.0.4.RELEASEversion>
          ????parent>

          ????<dependencies>
          ????????<dependency>
          ????????????<groupId>org.springframework.bootgroupId>
          ????????????<artifactId>spring-boot-starter-webartifactId>
          ????????dependency>
          ????????<dependency>
          ????????????<groupId>org.springframework.bootgroupId>
          ????????????<artifactId>spring-boot-starter-testartifactId>
          ????????????<scope>testscope>
          ????????dependency>
          ????dependencies>

          ????
          ????<properties>
          ????????<docker.image.prefix>dockerdemoservicedocker.image.prefix>
          ????properties>

          ????<build>
          ????????<plugins>
          ????????????<plugin>
          ????????????????<groupId>org.springframework.bootgroupId>
          ????????????????<artifactId>spring-boot-maven-pluginartifactId>
          ????????????plugin>
          ????????????
          ????????????<plugin>
          ????????????????<groupId>com.spotifygroupId>
          ????????????????<artifactId>docker-maven-pluginartifactId>
          ????????????????<version>1.0.0version>
          ????????????????<configuration>
          ????????????????????<imageName>${docker.image.prefix}/${project.artifactId}imageName>
          ????????????????????<dockerDirectory>src/main/dockerdockerDirectory>
          ????????????????????<resources>
          ????????????????????????<resource>
          ????????????????????????????<targetPath>/targetPath>
          ????????????????????????????<directory>${project.build.directory}directory>
          ????????????????????????????<include>${project.build.finalName}.jarinclude>
          ????????????????????????resource>
          ????????????????????resources>
          ????????????????configuration>
          ????????????plugin>
          ????????????
          ????????plugins>
          ????build>

          2.2啟動類

          @SpringBootApplication
          public?class?Application?{
          ????public?static?void?main(String[] args)?{
          ????????SpringApplication.run(Application.class,args);
          ????}
          }

          2.3Controller

          @RestController
          public?class?DockerController?{
          ????@GetMapping("/docker")
          ????public?String getString()?{
          ????????return?"dockerDemo is run";
          ????}
          }

          2.4在src/main下新建一個docker的目錄


          也就是src/main/docker。注意是目錄不是package

          • 在src/main/docker下新建一個Dockerfile的文件???

          FROM?openjdk:8-jdk-alpine
          VOLUME /tmp
          ADD dockerdemoservice-1.0-SNAPSHOT.jar app.jar
          ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
          • 這個 Dockerfile 文件很簡單,構(gòu)建 Jdk 基礎(chǔ)環(huán)境,添加 Spring Boot Jar 到鏡像中:

            • FROM ,表示使用 Jdk8 環(huán)境 為基礎(chǔ)鏡像,如果鏡像不是本地的會從 DockerHub 進(jìn)行下載

            • VOLUME ,VOLUME 指向了一個/tmp的目錄,由于 Spring Boot 使用內(nèi)置的Tomcat容器,Tomcat 默認(rèn)使用/tmp作為工作目錄。這個命令的效果是:在宿主機的/var/lib/docker目錄下創(chuàng)建一個臨時文件并把它鏈接到容器中的/tmp目錄

            • ADD ,拷貝文件并且重命名

            • ENTRYPOINT ,為了縮短 Tomcat 的啟動時間,添加java.security.egd的系統(tǒng)屬性指向/dev/urandom作為 ENTRYPOINT

          • 在本地運行沒問題,然后傳到Ubuntu里解壓

          三、打docker鏡像


          • 項目打壓縮包放到Ubuntu里

            正常的應(yīng)該是用git或svn拉代碼,這里為了方便直接copy到服務(wù)器里

          cd?/home/lanceli/code/dockerdemoservice # dockerdemoservice 是我的demo項目
          ls # 可以看到src pom.xml 就是在這一級目錄使用mvn打包
          mvn package # 先打成jar包,然后會生成一個target目錄
          cd?target
          java -jar dockerdemoservice-1.0-SNAPSHOT.jar # 可以看到spring boot的Log,然后請求controller 如果成功說明沒問題
          cd?/home/lanceli/code/dockerdemoservice # 回到項目的目錄中
          mvn package docker:build # 打成docker鏡像,看到BUILD SUCCESS后說明成功
          • 查看鏡像并運行

          sudo?docker images # openjdk之前是沒有的,自動pull下來的
          REPOSITORY TAG IMAGE ID CREATED SIZE
          dockerdemoservice/dockerdemoservice latest ea60d12b0337 24?minutes ago 121MB
          jenkins/jenkins lts 697d76eba014 8?days ago 677MB
          nginx latest 4bb46517cac3 11?days ago 133MB
          portainer/portainer latest 62771b0b9b09 4?weeks ago 79.1MB
          openjdk 8-jdk-alpine a3562aa0b991 15?months ago 105MB

          sudo docker run -d -p 8080:8080?dockerdemoservice/dockerdemoservice # 運行剛剛打好的鏡像
          • 測試訪問

            • 我在win10上訪問ubuntu的IP,加上映射的8080端口

            • http://192.168.18.135:8080/docker?可以訪問到我的接口




          粉絲福利:108本java從入門到大神精選電子書領(lǐng)取

          ???

          ?長按上方鋒哥微信二維碼?2 秒
          備注「1234」即可獲取資料以及
          可以進(jìn)入java1234官方微信群



          感謝點贊支持下哈?

          瀏覽 69
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  熟女老阿8888AV | 蜜桃91在线观看 | 亚洲啪AV永久无码精品放毛片 | 亚洲精品国产AV | 成人无码AV抖音 |