docker 构建自己的image 镜像文件
docker build 构建自己的镜像文件。
1、在本地工程中运行生成一个springboot的可运行的jar。
因为我习惯用eclipse,所以在eclipse下新建一个springboot的工程,firstSpringboot的工程。
maven配置文件中,注意:必须指定生成文件后运行的主函数mian,否则可能导致的结果是无法访问main函数的错误。
maven配置的pom.xml文件

<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.springboot</groupId> <artifactId>firstSpringboot</artifactId> <version>0.0.1-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency> </dependencies> <build> <!-- 生成文件的包名称 --> <finalName>firstSpringboot</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <!-- 必须指定主函数 --> <configuration> <mainClass>com.springboot.Application</mainClass> <executable>true</executable> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>2.8.2</version> <configuration> <skip>true</skip> </configuration> </plugin> </plugins> </build> </project>
springmvc中,访问后,会打印出这样一句话。
执行 maven命令打包,也可通过工具直接build。mvn clean package 或install 都可以。
生成文件后如图所示。
2、在本地测试一下是否可访问。
在本机doc下启动我们的jar包看看看是否可以启动。
如果没主函数main指定,会报找不到主干数错误。
doc下启动服务命令:
java -jar \路径\firstSpringboot \target\firstSpringboot-0.0.1-SNAPSHOT.jar
启动完成,本地测试,在浏览器中输入 :
http://localhost:8090/hello
访问通了,可见我们的jar包是ok的,页面展示如下:
3、在/usr/local下创建一个dockerapp的目录,将本地生成的jar文件上传到docker服务器上的这个目录。/usr/local/dockerapp
cd /usr/loca
mkdir dockapp
然后通过ftp、或者secureCRT将我们的jar包上传到服务器下。
4、在上传文件的目录/usr/local/dockerapp 下新建一个Dockerfile文件,文件内容定义jar包信息在docker容器中的名称。保存文件。
创建Dockerfile文件。
文件内容:意思是使用的是jdk8,将firstSpringboot.jar文件添加到docker容器下,并且名字为first-springboot.jar,对外声明启动端口是8090,跟我们的application.yml配置文件一样。最后就是执行命令生成
###java8环境镜像
FROM java:8
###复制文件到容器app-springboot
ADD firstSpringboot.jar /first-springboot.jar
###声明启动端口号
EXPOSE 8090
###配置容器启动后执行的命令
ENTRYPOINT ["java","-jar","/first-springboot.jar"]
生产可用Dockerfile
# 若用docker部署,将该文件复制到项目工程下 FROM openjdk:8-jre-alpine VOLUME /tmp ADD 项目应用名称-0.0.1-SNAPSHOT.jar app.jar # RUN bash -c 'touch /app.jar' ENV TZ=PRC RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","app.jar"] EXPOSE 8761
执行成功。如图所示:
5、用docker build -t 文件名称 . 这个命令构建镜像文件image ,后面那个“.”表示当前目录。
docker build -t first-springboot .
6、查看镜像文件是否生成。
docker images
7、运行docker run 命令启动我们的应用。
启动应用。
docker run -p 8080:8090 first-springboot
服务启动成功,如下图所示
8、测试应用是否可访问。
访问地址:http://192.168.5.129:8080/hello
浏览器显示如下:证明很ok。
9、测试原端口是否可以访问。
访问:http://192.168.5.129:8090/hello
请求失败。。
10、设置服务在后台运行
1 2 3 4 | #在后台运行,在run后面加-d docker run -d -p 8080 : 8090 first-springboot #查看有哪些容器在运行 docker ps |
如图
总结:docker部署流程,有点复杂,但是熟练后,应该很简单。接着学。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器