<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 遇上 IDEA ,生產(chǎn)力徹底炸裂了

          共 9681字,需瀏覽 20分鐘

           ·

          2021-08-05 01:34

          來自:掘金,作者:陶章好

          鏈接:https://juejin.im/post/5d026212f265da1b8608828b

          Idea是Java開發(fā)利器,SpringBoot是Java生態(tài)中最流行的微服務框架,docker是時下最火的容器技術(shù),那么它們結(jié)合在一起會產(chǎn)生什么化學反應呢?

          一、開發(fā)前準備

          1. Docker的安裝可以參考https://docs.docker.com/install/


          2. 配置docker遠程連接端口

            vi /usr/lib/systemd/system/docker.service


          找到 ExecStart,在最后面添加 -H tcp://0.0.0.0:2375,如下圖所示



          3. 重啟docker

           systemctl daemon-reload systemctl start docker

          4. 開放端口

          firewall-cmd --zone=public --add-port=2375/tcp --permanent

          5. Idea安裝插件,重啟



          6. 連接遠程docker


           (1) 編輯配置

          ??

          (2) 填遠程docker地址


           (3) 連接成功,會列出遠程docker容器和鏡像

          二、新建項目

          1. 創(chuàng)建springboot項目


          項目結(jié)構(gòu)圖



          (1) 配置pom文件


          <?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>

              <groupId>docker-demo</groupId>
              <artifactId>com.demo</artifactId>
              <version>1.0-SNAPSHOT</version>
              <parent>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-parent</artifactId>
                  <version>2.0.2.RELEASE</version>
                  <relativePath />
              </parent>

              <properties>
                   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
                   <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
                   <docker.image.prefix>com.demo</docker.image.prefix>
                   <java.version>1.8</java.version>
              </properties>
              <build>
                  <plugins>
                    <plugin>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-maven-plugin</artifactId>
                    </plugin>
                  <plugin>
                     <groupId>com.spotify</groupId>
                     <artifactId>docker-maven-plugin</artifactId>
                     <version>1.0.0</version>
                     <configuration>
                        <dockerDirectory>src/main/docker</dockerDirectory>
                        <resources>
                          <resource>
                              <targetPath>/</targetPath>
                              <directory>${project.build.directory}</directory>
                              <include>${project.build.finalName}.jar</include>
                          </resource>
                        </resources>
                     </configuration>
                  </plugin>
                  <plugin>
                      <artifactId>maven-antrun-plugin</artifactId>
                      <executions>
                           <execution>
                               <phase>package</phase>
                              <configuration>
                                  <tasks>
                                      <copy todir="src/main/docker" file="target/${project.artifactId}-${project.version}.${project.packaging}"></copy>
                                  </tasks>
                               </configuration>
                              <goals>
                                  <goal>run</goal>
                              </goals>
                              </execution>
                      </executions>
                  </plugin>

                 </plugins>
              </build>
          <dependencies>
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-web</artifactId>
              </dependency>
              <dependency>
            <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-test</artifactId>
                  <scope>test</scope>
              </dependency>
              <dependency>
                  <groupId>log4j</groupId>
                  <artifactId>log4j</artifactId>
                  <version>1.2.17</version>
              </dependency>
          </dependencies>
          </project>


          (2) 在src/main目錄下創(chuàng)建docker目錄,并創(chuàng)建Dockerfile文件


          FROM openjdk:8-jdk-alpine
          ADD *.jar app.jar
          ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]


          (3) 在resource目錄下創(chuàng)建application.properties文件


          logging.config=classpath:logback.xml
          logging.path=/home/developer/app/logs/
          server.port=8990


          (4) 創(chuàng)建DockerApplication文件


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


          (5) 創(chuàng)建DockerController文件


          @RestController
          public class DockerController {
              static Log log = LogFactory.getLog(DockerController.class);

              @RequestMapping("/")
              public String index() {
                  log.info("Hello Docker!");
                  return "Hello Docker!";
              }
          }


          (6) 增加配置





          命令解釋


          Image tag : 指定鏡像名稱和tag,鏡像名稱為 docker-demo,tag為1.1
          Bind ports : 綁定宿主機端口到容器內(nèi)部端口。格式為[宿主機端口]:[容器內(nèi)
          部端口]

          Bind mounts : 將宿主機目錄掛到到容器內(nèi)部目錄中。格式為[宿主機目錄]:[容器內(nèi)部目錄]。這個springboot項目會將日志打印在容器 

          /home/developer/app/logs/ 目錄下,將宿主機目錄掛載到容器內(nèi)部目錄后,那么日志就會持久化容器外部的宿主機目錄中。


          (7) Maven打包



          (8) 運行



          先pull基礎鏡像,然后再打包鏡像,并將鏡像部署到遠程docker運行


          這里我們可以看到鏡像名稱為docker-demo:1.1,docker容器為docker-server


          (9) 運行成功



          (10) 瀏覽器訪問


          (11) 日志查看



          自此通過idea 部署springboot項目到docker成功!難以想象,部署一個Javaweb項目竟然如此簡單方便!


          —————END—————

          推薦閱讀:

          推薦7個牛哄哄 Spring Cloud 實戰(zhàn)項目
          基于 SpringBoot + Vue 實現(xiàn)的可視化拖拽編輯的大屏項目
          Github上10個超好看 可視化面板,后臺管理頁面有著落了
          Docker 被禁,有哪些開源產(chǎn)品可以替代?

          最近面試BAT,整理一份面試資料Java面試BAT通關(guān)手冊,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務、數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)等等。
          獲取方式:關(guān)注公眾號并回復 java 領取,更多內(nèi)容陸續(xù)奉上。
          明天見(??ω??)??


          瀏覽 46
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  亚洲无码黄色 | 69欧美视频 | 奇米狠狠二区 | 日本黄电影在线看 | 日本不卡视频在线 |