1. 使用Docker部署SpringBoot項目

        共 3382字,需瀏覽 7分鐘

         ·

        2020-08-30 05:35

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

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

        ? 作者?|??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 進行下載

          • 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」即可獲取資料以及
        可以進入java1234官方微信群



        感謝點贊支持下哈?

        瀏覽 69
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

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

        手機掃一掃分享

        分享
        舉報
          
          

            1. 中文字幕日本精品5 | 动漫乳色吐息 | 无遮挡裸光屁屁打屁股 | av无码偷拍 | 久久精品免费视频性生活 |