IDEA的Docker插件实战(Dockerfile篇)
生活随笔
收集整理的這篇文章主要介紹了
IDEA的Docker插件实战(Dockerfile篇)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
IDEA的Docker插件實戰(Dockerfile篇)
IntelliJ IDEA的Docker插件能幫助我們將當前工程制作成Docker鏡像、運行在指定的遠程機器上,是學習和開發階段的好幫手,本文一起來實戰此插件的基本用法;
關于系列文章
本文是《IDEA的Docker插件實戰》系列的第一篇,IDEA的Docker插件一共有三種:Dockerfile、Docker Image、Docker-compose,今天實戰的是Dockerfile。
系列文章鏈接
- 《IDEA的Docker插件實戰(Dockerfile篇)》;
- 《IDEA的Docker插件實戰(Docker Image篇)》;
- 《IDEA的Docker插件實戰(Docker-compose篇)》;
全文概覽
本文由以下幾部分組成:
- 環境信息
- 介紹如何免費使用正版IntelliJ IDEA
- 介紹如何開啟Docker的遠程連接
- 安裝Docker插件的步驟
- 連接遠程Docker服務
- 創建springboot工程用于演示Docker插件
- 使用Docker插件將應用構建成鏡像并在遠程Docker上運行
環境信息
本次實戰需要提前準備好以下內容:
- 開發環境操作系統:win10
- IntelliJ IDEA: 2018.2.4 (Ultimate Edition)
- JDK:1.8.0_181
- Maven:3.5.0
- Docker服務所在環境:CentOS Linux release 7.6.1810
- Docker:1.13.1, build b2f74b2/1.13.1
免費使用正版IntelliJ IDEA
IntelliJ IDEA (Ultimate Edition)是商業版本,目前其License費用為499美金一年,對于學習和非商業用途開發者來說,其實是有機會免費獲取此License的,申請和使用的詳情可參考《免費申請和使用IntelliJ IDEA商業版License指南》;
開啟Docker的遠程連接
本次實戰中,IDEA作為開發電腦,要遠程連接到另一臺Linux電腦上部署的Docker服務,這就要求Docker服務開啟了遠程連接,開啟方式請參考:《Docker遠程連接設置》
準備工作完成了,開始實戰吧。
安裝Docker插件
- 在IDEA的開始頁面,點擊右下角的"Configure"菜單,再點擊下圖紅框中的"Plugins"按鈕,進入插件管理頁面:
- 點擊下圖紅框中的Browse repositories按鈕:
- 如下圖,紅框1位置輸入"Docker"之后就會搜到紅框2中的Docker插件,再點擊紅框3中的"Install"按鈕開始安裝插件:
- 安裝完成后,原先的"Install"按鈕的文案變成了重啟,點擊該按鈕重啟IDEA,至此Docker插件安裝完成;
連接遠程Docker服務
- 在IDEA的開始頁面,點擊右下角的"Configure"菜單,再點擊下圖紅框中的"Settings"按鈕,進入設置頁面:
- 在設置頁面,按照下圖的數字順序創建一個Docker server并進行設置,其中"192.168.121.131"是Docker服務所在機器的IP地址,如果連接成功頁面上會立即提示"Connection successful":
至此,Docker插件準備完畢,遠程連接也已經OK,可以嘗試使用該插件了。
創建一個springboot應用
為了驗證Docker插件的功能,先開發一個簡單的sringboot應用:
- 在IEDA上創建一個名為dockerplugindemo的springboot工程,其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 https://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.bolingcavalry</groupId><artifactId>dockerplugindemo</artifactId><version>0.0.1-SNAPSHOT</version><name>dockerplugindemo</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-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>
- 應用啟動類同時作為Controller,增加一個web響應接口:
package com.bolingcavalry.dockerplugindemo;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 DockerplugindemoApplication {public static void main(String[] args) {SpringApplication.run(DockerplugindemoApplication.class, args);}@RequestMapping("/test")public String test(){return "1. Hello world ! " + new SimpleDateFormat(" [yyyy-mm-dd HH:mm:ss]").format(new Date());}
}
可見這是個最普通的springboot應用,對外提供一個http接口,接下來用Docker插件將此應用構建成鏡像并在遠程Docker上運行;
用Docker插件將應用構建成鏡像并在遠程Docker上運行
- 在工程dockerplugindemo的pom.xml文件所在目錄下,創建名為Dockerfile的文件,內容如下:
# Docker image for springboot application
# VERSION 0.0.1
# Author: bolingcavalry### 基礎鏡像,使用alpine操作系統,openjkd使用8u201
FROM openjdk:8u201-jdk-alpine3.9#作者
MAINTAINER BolingCavalry <zq2599@gmail.com>#系統編碼
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8#聲明一個掛載點,容器內此路徑會對應宿主機的某個文件夾
VOLUME /tmp#應用構建成功后的jar文件被復制到鏡像內,名字也改成了app.jar
ADD target/dockerplugindemo-0.0.1-SNAPSHOT.jar app.jar#啟動容器時的進程
ENTRYPOINT ["java","-jar","/app.jar"]#暴露8080端口
EXPOSE 8080
- ?
- 如下圖紅框所示,創建一個配置:
- 創建一個Dockerfile配置,如下所示:
- Dockerfile配置詳情如下圖所示,請按照圖中的說明進行設置,確保每個紅框中都會執行到:
- 上圖中最下面的那個"Run Maven Goal"點擊后,會彈出一個小窗口 ,用來輸入要執行的maven命令,這里輸入clean package -U -DskipTests,表示每次在構建鏡像之前,都會將當前工程清理掉并且重新編譯構建:
- 設置完成后,點擊下圖紅框中的綠色三角按鈕,執行此配置:
- 運行結果如下所示,項目構建成功后,在Docker上部署鏡像成功,然后運行容器成功:
- 登錄遠程Docker,先后執行docker image和docker ps命令查看鏡像和容器情況如下,可見一切正常:
[root@maven ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
dockerplugindemo latest 0144ba203220 8 minutes ago 122 MB
docker.io/tomcat latest 96c4e536d0eb 2 days ago 506 MB
bolingcavalry/nacosconfigdemo 1.0-SNAPSHOT ed524b78f80b 6 days ago 125 MB
bolingcavalry/nacosserver 0.0.1 9ab34ff860d8 3 weeks ago 156 MB
docker.io/openjdk 8u212-jdk-stretch 03b20c1fa768 6 weeks ago 488 MB
docker.io/openjdk 8u201-jdk-alpine3.9 3675b9f543c5 4 months ago 105 MB
docker.io/fabric8/java-jboss-openjdk8-jdk 1.3 c9d7e2e7b917 20 months ago 436 MB
[root@maven ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b54144064138 0144ba203220 "java -jar /app.jar" 8 minutes ago Up 8 minutes 0.0.0.0:18080->8080/tcp dockerplugindemo
?
- 遠程Docker所在服務器IP地址是192.168.121.131,因此在瀏覽器上訪問地址:http://192.168.121.131:18080/test ,得到響應如下圖所示,可見應用在容器中正常運行:
- 修改工程中的DockerplugindemoApplication.java的源碼,test方法的返回值原本是"Hello world ! ",改成"123456 Hello world ! ",然后再次點擊綠色三角按鈕,運行"dockerfile"配置,看看這個改動能不能立即生效,等待構建、部署、運行都完成后,再次用瀏覽器訪問地址:http://192.168.121.131:18080/test ,得到響應如下圖所示,可見剛才的改動可以立即生效:
至此,IEDA下的Docker插件配置和使用實戰就完成了,希望您在選用該插件時,本文能給您提供一些參考。
總結
以上是生活随笔為你收集整理的IDEA的Docker插件实战(Dockerfile篇)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2022-2028年中国装备制造产业深度
- 下一篇: 2022-2028年中国专用化学品行业投