使用docker desktop + idea 開發環境搭建


對於docker 我個人一直很好奇,可惜沒有環境來實戰,上一年了解到 win10 下可以使用 docker desktop 這樣的神器來搭建docker 環境,剛好周六自己玩了玩,使用idea+docker desktop 來搭建一個環境。現在將過程寫出來:

准備:

docker desktop 安裝包+idea,這邊我首先得說明下:docker desktop 需要win10的專業版甚至更高版本才行,而且必須得是win10 好像,這邊有問題就自己先百度吧,我這邊不做多余陳述,idea 我使用的是專業版,至於咋獲得,你懂得~

開始:

1.首先 安裝docker desktop ,這邊你可以參考如下:

https://www.cnblogs.com/jc2182/p/11260845.html

https://blog.csdn.net/topdeveloperr/article/details/105517877

2.docker desktop的使用參考如下帖子:

https://xunmi.blog.csdn.net/article/details/108641842

3.在idea 中安裝Docker 的相關插件,如何安裝請百度!

在設置中搜索docker,然后在Engine API URL中設置 :tcp://localhost:2375,

 

 

 

這個與docker desktop 中的General 中的選項類似,如圖:

 

 

  一定得保證這個功能處於使能狀態。

4.開始編寫dockerfile 文件:

因為項目中一直使用的是springCloud 相關的東西,但是每次在本地調試時需要用到eureka,自己起idea 啥的好麻煩,所以docker 直接走起。

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>com.neo</groupId>
<artifactId>spring-cloud-eureka</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>spring-cloud-eureka</name>
<description>Demo project for Spring cloud eureka</description>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Dalston.RELEASE</spring-cloud.version>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<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>
<imageName>${project.groupId}-${project.artifactId}</imageName>
<!-- <imageTags>-->
<!-- <imageTag>latest</imageTag>-->
<!-- </imageTags>-->
<dockerDirectory>src/main/docker</dockerDirectory>
<!-- 這里是復制 jar 包到 docker 容器指定目錄配置 -->
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>

</plugins>
</build>

</project>
關於eureka的相關配置我這里不做過多解釋,大家需要重點關注:
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<imageName>${project.groupId}-${project.artifactId}</imageName>
<!-- <imageTags>-->
<!-- <imageTag>latest</imageTag>-->
<!-- </imageTags>-->
<dockerDirectory>src/main/docker</dockerDirectory>
<!-- 這里是復制 jar 包到 docker 容器指定目錄配置 -->
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
這里面的配置內容,其中 imageName 是將來鏡像的名稱,但我這次貌似沒啥用,
dockerDirectory 是未來 Dockerfile 存放的目錄,這個很重要,配置錯了將來dockerfile 打包的時候會報錯的,千萬記住,這里需要跟后面docker 的運行配置還有dockefile 文件互相呼應,剩下的就不說了你照抄就是了
2. 寫 Dockerfile文件:
我在 src/main 目錄底下新建了一個docker 目錄,然后在內新建一個 Dockerfile 文件,Dockerfile 文件內容如下:
# Docker image for springboot application
# VERSION 0.0.1
# Author: bolingcavalry

### 基礎鏡像,使用alpine操作系統,openjkd使用8u201
FROM java:8

#作者
MAINTAINER zhangming <362878635@gmail.com>

#系統編碼
#ENV LANG=C.UTF-8 LC_ALL=C.UTF-8

#聲明一個掛載點,容器內此路徑會對應宿主機的某個文件夾
VOLUME /tmp


#應用構建成功后的jar文件被復制到鏡像內,名字也改成了app.jar
ADD target/spring-cloud-eureka-0.0.1-SNAPSHOT.jar app.jar

#暴露8090端口,這里是 eureka的端口號
EXPOSE 8900

#RUN bash -c 'touch /app.jar'


#啟動容器時的進程
ENTRYPOINT ["java","-jar","/app.jar"]
然后在Dockerfile 中會出現個箭頭

這里的Add 之后的目錄需要設置清楚,這里暫時設置target 目錄之后,這里的xx.jar 文件就是以后編譯成功之后的文件,這個需要跟context folder 做一個對應關系,看看主目錄是哪一個來決定這里咋設置

然后點擊最底下的edit 進行編輯,如圖:

 

 

注意這里的context folder 的路徑可得千萬設置清楚,我這里設置的文件根目錄,這個玩意讓我吃了好幾次虧

 容器內外端口映射:

 

最后點擊最下面的:

 

 

 

 

 

 最后在里面復制上:clean package -U -DskipTests 這段命令來跳過單元測試

3.開始編譯:

首先在maven插件內點擊 install

 

再次構建docker 文件:

 

構建成功后如圖:

 

 

 運行dockerfile 文件,一定點擊這里,我當時點的是dockerfile 里面的run 一直運行不起來,坑了我好久:

 此處我后續發現一個問題,假如在進行 運行配置設置時勾選了這個框的話,如圖:

 

 你在運行docker 的時候可以直接點擊 運行那個三角符號,而不需要啰嗦的先進行build,然后點擊run 了,這樣子run 一下可以一步到位!有沒有很棒~O(∩_∩)O哈哈~

 運行成功如圖:

 

 

 此時在瀏覽器輸入http://localhost:8900/來訪問eureka,如圖:

 

此時點擊docker desktop  的Dashboard圖標,如圖:

 

 點開后如圖:

 

 此時可以看到我們的容器如上圖。

 

 

 

 點擊開容器后,如圖:

 

 這樣子就啟動了

 插曲:我在運行成功后發現docker 內的日志打印正常,但是我本地就是沒辦法訪問,最后也不知道咋辦就用了重啟大法,果然沒有啥問題是重啟解決不了的!

 

 

 完了!有問題的話后續繼續更新

 

 

 

 



 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM