IDEA的Docker插件实战(Dockerfile篇)
IDEA的Docker插件實戰(zhàn)(Dockerfile篇)
IntelliJ IDEA的Docker插件能幫助我們將當(dāng)前工程制作成Docker鏡像、運行在指定的遠(yuǎn)程機器上,是學(xué)習(xí)和開發(fā)階段的好幫手,本文一起來實戰(zhàn)此插件的基本用法;
關(guān)于系列文章
本文是《IDEA的Docker插件實戰(zhàn)》系列的第一篇,IDEA的Docker插件一共有三種:Dockerfile、Docker Image、Docker-compose,今天實戰(zhàn)的是Dockerfile。
系列文章鏈接
- 《IDEA的Docker插件實戰(zhàn)(Dockerfile篇)》;
- 《IDEA的Docker插件實戰(zhàn)(Docker Image篇)》;
- 《IDEA的Docker插件實戰(zhàn)(Docker-compose篇)》;
全文概覽
本文由以下幾部分組成:
- 環(huán)境信息
- 介紹如何免費使用正版IntelliJ IDEA
- 介紹如何開啟Docker的遠(yuǎn)程連接
- 安裝Docker插件的步驟
- 連接遠(yuǎn)程Docker服務(wù)
- 創(chuàng)建springboot工程用于演示Docker插件
- 使用Docker插件將應(yīng)用構(gòu)建成鏡像并在遠(yuǎn)程Docker上運行
環(huán)境信息
本次實戰(zhàn)需要提前準(zhǔn)備好以下內(nèi)容:
- 開發(fā)環(huán)境操作系統(tǒng):win10
- IntelliJ IDEA: 2018.2.4 (Ultimate Edition)
- JDK:1.8.0_181
- Maven:3.5.0
- Docker服務(wù)所在環(huán)境:CentOS Linux release 7.6.1810
- Docker:1.13.1, build b2f74b2/1.13.1
免費使用正版IntelliJ IDEA
IntelliJ IDEA (Ultimate Edition)是商業(yè)版本,目前其License費用為499美金一年,對于學(xué)習(xí)和非商業(yè)用途開發(fā)者來說,其實是有機會免費獲取此License的,申請和使用的詳情可參考《免費申請和使用IntelliJ IDEA商業(yè)版License指南》;
開啟Docker的遠(yuǎn)程連接
本次實戰(zhàn)中,IDEA作為開發(fā)電腦,要遠(yuǎn)程連接到另一臺Linux電腦上部署的Docker服務(wù),這就要求Docker服務(wù)開啟了遠(yuǎn)程連接,開啟方式請參考:《Docker遠(yuǎn)程連接設(shè)置》
準(zhǔn)備工作完成了,開始實戰(zhàn)吧。
安裝Docker插件
- 在IDEA的開始頁面,點擊右下角的"Configure"菜單,再點擊下圖紅框中的"Plugins"按鈕,進(jìn)入插件管理頁面:
- 點擊下圖紅框中的Browse repositories按鈕:
- 如下圖,紅框1位置輸入"Docker"之后就會搜到紅框2中的Docker插件,再點擊紅框3中的"Install"按鈕開始安裝插件:
- 安裝完成后,原先的"Install"按鈕的文案變成了重啟,點擊該按鈕重啟IDEA,至此Docker插件安裝完成;
連接遠(yuǎn)程Docker服務(wù)
- 在IDEA的開始頁面,點擊右下角的"Configure"菜單,再點擊下圖紅框中的"Settings"按鈕,進(jìn)入設(shè)置頁面:
- 在設(shè)置頁面,按照下圖的數(shù)字順序創(chuàng)建一個Docker server并進(jìn)行設(shè)置,其中"192.168.121.131"是Docker服務(wù)所在機器的IP地址,如果連接成功頁面上會立即提示"Connection successful":
至此,Docker插件準(zhǔn)備完畢,遠(yuǎn)程連接也已經(jīng)OK,可以嘗試使用該插件了。
創(chuàng)建一個springboot應(yīng)用
為了驗證Docker插件的功能,先開發(fā)一個簡單的sringboot應(yīng)用:
- 在IEDA上創(chuàng)建一個名為dockerplugindemo的springboot工程,其pom.xml是默認(rèn)內(nèi)容:
<?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>
- 應(yīng)用啟動類同時作為Controller,增加一個web響應(yīng)接口:
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應(yīng)用,對外提供一個http接口,接下來用Docker插件將此應(yīng)用構(gòu)建成鏡像并在遠(yuǎn)程Docker上運行;
用Docker插件將應(yīng)用構(gòu)建成鏡像并在遠(yuǎn)程Docker上運行
- 在工程dockerplugindemo的pom.xml文件所在目錄下,創(chuàng)建名為Dockerfile的文件,內(nèi)容如下:
# Docker image for springboot application
# VERSION 0.0.1
# Author: bolingcavalry### 基礎(chǔ)鏡像,使用alpine操作系統(tǒng),openjkd使用8u201
FROM openjdk:8u201-jdk-alpine3.9#作者
MAINTAINER BolingCavalry <zq2599@gmail.com>#系統(tǒng)編碼
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8#聲明一個掛載點,容器內(nèi)此路徑會對應(yīng)宿主機的某個文件夾
VOLUME /tmp#應(yīng)用構(gòu)建成功后的jar文件被復(fù)制到鏡像內(nèi),名字也改成了app.jar
ADD target/dockerplugindemo-0.0.1-SNAPSHOT.jar app.jar#啟動容器時的進(jìn)程
ENTRYPOINT ["java","-jar","/app.jar"]#暴露8080端口
EXPOSE 8080
- ?
- 如下圖紅框所示,創(chuàng)建一個配置:
- 創(chuàng)建一個Dockerfile配置,如下所示:
- Dockerfile配置詳情如下圖所示,請按照圖中的說明進(jìn)行設(shè)置,確保每個紅框中都會執(zhí)行到:
- 上圖中最下面的那個"Run Maven Goal"點擊后,會彈出一個小窗口 ,用來輸入要執(zhí)行的maven命令,這里輸入clean package -U -DskipTests,表示每次在構(gòu)建鏡像之前,都會將當(dāng)前工程清理掉并且重新編譯構(gòu)建:
- 設(shè)置完成后,點擊下圖紅框中的綠色三角按鈕,執(zhí)行此配置:
- 運行結(jié)果如下所示,項目構(gòu)建成功后,在Docker上部署鏡像成功,然后運行容器成功:
- 登錄遠(yuǎn)程Docker,先后執(zhí)行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
?
- 遠(yuǎn)程Docker所在服務(wù)器IP地址是192.168.121.131,因此在瀏覽器上訪問地址:http://192.168.121.131:18080/test ,得到響應(yīng)如下圖所示,可見應(yīng)用在容器中正常運行:
- 修改工程中的DockerplugindemoApplication.java的源碼,test方法的返回值原本是"Hello world ! ",改成"123456 Hello world ! ",然后再次點擊綠色三角按鈕,運行"dockerfile"配置,看看這個改動能不能立即生效,等待構(gòu)建、部署、運行都完成后,再次用瀏覽器訪問地址:http://192.168.121.131:18080/test ,得到響應(yīng)如下圖所示,可見剛才的改動可以立即生效:
至此,IEDA下的Docker插件配置和使用實戰(zhàn)就完成了,希望您在選用該插件時,本文能給您提供一些參考。
總結(jié)
以上是生活随笔為你收集整理的IDEA的Docker插件实战(Dockerfile篇)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2022-2028年中国装备制造产业深度
- 下一篇: 2022-2028年中国专用化学品行业投