对于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 内的日志打印正常,但是我本地就是没办法访问,最后也不知道咋办就用了重启大法,果然没有啥问题是重启解决不了的!
完了!有问题的话后续继续更新
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构