对于docker 我个人一直很好奇,可惜没有环境来实战,上一年了解到 win10 下可以使用 docker desktop 这样的神器来搭建docker 环境,刚好周六自己玩了玩,使用idea+docker desktop 来搭建一个环境。现在将过程写出来:

准备:

docker desktop 安装包+idea,这边我首先得说明下:docker desktop 需要win10的专业版甚至更高版本才行,而且必须得是win10 好像,这边有问题就自己先百度吧,我这边不做多余陈述,idea 我使用的是专业版,至于咋获得,你懂得~

开始:

1.首先 安装docker desktop ,这边你可以参考如下:

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

3.在idea 中安装Docker 的相关插件,如何安装请百度!

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

 

docker 打开idea docker idea开发_docker 打开idea

 

 

这个与docker desktop 中的General 中的选项类似,如图:

 

docker 打开idea docker idea开发_docker_02

 

  一定得保证这个功能处于使能状态。

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 中会出现个箭头

docker 打开idea docker idea开发_docker 打开idea_03

这里的Add 之后的目录需要设置清楚,这里暂时设置target 目录之后,这里的xx.jar 文件就是以后编译成功之后的文件,这个需要跟context folder 做一个对应关系,看看主目录是哪一个来决定这里咋设置

然后点击最底下的edit 进行编辑,如图:

docker 打开idea docker idea开发_docker_04

 

 

注意这里的context folder 的路径可得千万设置清楚,我这里设置的文件根目录,这个玩意让我吃了好几次亏

 容器内外端口映射:

docker 打开idea docker idea开发_docker 打开idea_05

 

最后点击最下面的:

docker 打开idea docker idea开发_docker 打开idea_06

 

 

 

docker 打开idea docker idea开发_spring_07

 

 

 最后在里面复制上:clean package -U -DskipTests 这段命令来跳过单元测试

3.开始编译:

首先在maven插件内点击 install

docker 打开idea docker idea开发_jar_08

 

再次构建docker 文件:

docker 打开idea docker idea开发_spring_09

 

构建成功后如图:

docker 打开idea docker idea开发_docker_10

 

 

 运行dockerfile 文件,一定点击这里,我当时点的是dockerfile 里面的run 一直运行不起来,坑了我好久:

docker 打开idea docker idea开发_jar_11

 此处我后续发现一个问题,假如在进行 运行配置设置时勾选了这个框的话,如图:

docker 打开idea docker idea开发_docker_12

 

 你在运行docker 的时候可以直接点击 运行那个三角符号,而不需要啰嗦的先进行build,然后点击run 了,这样子run 一下可以一步到位!有没有很棒~O(∩_∩)O哈哈~

 运行成功如图:

docker 打开idea docker idea开发_jar_13

 

 

 此时在浏览器输入http://localhost:8900/来访问eureka,如图:

 

docker 打开idea docker idea开发_docker 打开idea_14

此时点击docker desktop  的Dashboard图标,如图:

docker 打开idea docker idea开发_spring_15

 

 点开后如图:

docker 打开idea docker idea开发_spring_16

 

 此时可以看到我们的容器如上图。

 

 

 

 点击开容器后,如图:

docker 打开idea docker idea开发_spring_17

 

 这样子就启动了

 插曲:我在运行成功后发现docker 内的日志打印正常,但是我本地就是没办法访问,最后也不知道咋办就用了重启大法,果然没有啥问题是重启解决不了的!

 

  完了!有问题的话后续继续更新