当前位置: 首页 > news >正文

【小白入门docker】创建Spring Boot Hello World应用制作Docker镜像并运行

一、背景

目前docker使用越来越广泛,本人对docker也在逐步学习,所以借此抽了一点点时间做个helloworld玩一把,并且分享给各位同学~,不喜勿喷,多谢~。

二、概述

首先创建一个基于springboot的应用,本地验证下是否可以启动,并且访问一下接口是否是ok的;然后写一份dockerfile; 接着打包并且上传到服务器上;接着制作docker镜像、启动docker容器、访问接口等事项。

前提:默认Linux已经安装好docker环境了,本文不包含docker环境的安装过程。

三、正文

(一)、windows环境下相关工作

1、创建一个springboot的项目

1)项目截图

2)、maven依赖

<?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.5.5</version><relativePath/></parent><groupId>com.hello</groupId><artifactId>springboot-helloworld</artifactId><version>0.0.1</version><name>springboot-helloworld</name><description>springboot-helloworld desc</description><properties><java.version>1.8</java.version><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

3)、接口实现

package com.hello.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.Date;@RestController
public class HelloWorldController {@GetMapping("/helloWorld")public String count(){return "helloWorld,今天是"+new Date();}
}

2、写一份Dockerfile

FROM openjdk:8-jdk-slim
LABEL maintainer=ltCOPY target/*.jar /app.jarENTRYPOINT ["java","-jar","/app.jar"]

3、本地运行springboot项目

"C:\Program Files\Java\jdk1.8.0_321\bin\java.exe" -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:39131,suspend=y,server=n -javaagent:D:\work\tools\ideaIC-2024.2.3.win\plugins\java\lib\rt\debugger-agent.jar -Dkotlinx.coroutines.debug.enable.creation.stack.trace=false -Ddebugger.agent.enable.coroutines=true -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_321\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_321\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_321\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_321\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_321\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_321\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_321\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_321\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_321\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_321\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_321\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_321\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_321\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_321\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_321\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_321\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_321\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_321\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_321\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_321\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_321\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_321\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_321\jre\lib\rt.jar;D:\work\技术研究\java-demo\springboot-helloworld\target\classes;F:\tools\maven\s_warehouse\maven\repository\org\springframework\boot\spring-boot-starter-web\2.5.5\spring-boot-starter-web-2.5.5.jar;F:\tools\maven\s_warehouse\maven\repository\org\springframework\boot\spring-boot-starter\2.5.5\spring-boot-starter-2.5.5.jar;F:\tools\maven\s_warehouse\maven\repository\org\springframework\boot\spring-boot\2.5.5\spring-boot-2.5.5.jar;F:\tools\maven\s_warehouse\maven\repository\org\springframework\boot\spring-boot-autoconfigure\2.5.5\spring-boot-autoconfigure-2.5.5.jar;F:\tools\maven\s_warehouse\maven\repository\org\springframework\boot\spring-boot-starter-logging\2.5.5\spring-boot-starter-logging-2.5.5.jar;F:\tools\maven\s_warehouse\maven\repository\ch\qos\logback\logback-classic\1.2.6\logback-classic-1.2.6.jar;F:\tools\maven\s_warehouse\maven\repository\ch\qos\logback\logback-core\1.2.6\logback-core-1.2.6.jar;F:\tools\maven\s_warehouse\maven\repository\org\slf4j\slf4j-api\1.7.32\slf4j-api-1.7.32.jar;F:\tools\maven\s_warehouse\maven\repository\org\apache\logging\log4j\log4j-to-slf4j\2.14.1\log4j-to-slf4j-2.14.1.jar;F:\tools\maven\s_warehouse\maven\repository\org\apache\logging\log4j\log4j-api\2.14.1\log4j-api-2.14.1.jar;F:\tools\maven\s_warehouse\maven\repository\org\slf4j\jul-to-slf4j\1.7.32\jul-to-slf4j-1.7.32.jar;F:\tools\maven\s_warehouse\maven\repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;F:\tools\maven\s_warehouse\maven\repository\org\springframework\spring-core\5.3.10\spring-core-5.3.10.jar;F:\tools\maven\s_warehouse\maven\repository\org\springframework\spring-jcl\5.3.10\spring-jcl-5.3.10.jar;F:\tools\maven\s_warehouse\maven\repository\org\yaml\snakeyaml\1.28\snakeyaml-1.28.jar;F:\tools\maven\s_warehouse\maven\repository\org\springframework\boot\spring-boot-starter-json\2.5.5\spring-boot-starter-json-2.5.5.jar;F:\tools\maven\s_warehouse\maven\repository\com\fasterxml\jackson\core\jackson-databind\2.12.5\jackson-databind-2.12.5.jar;F:\tools\maven\s_warehouse\maven\repository\com\fasterxml\jackson\core\jackson-annotations\2.12.5\jackson-annotations-2.12.5.jar;F:\tools\maven\s_warehouse\maven\repository\com\fasterxml\jackson\core\jackson-core\2.12.5\jackson-core-2.12.5.jar;F:\tools\maven\s_warehouse\maven\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.12.5\jackson-datatype-jdk8-2.12.5.jar;F:\tools\maven\s_warehouse\maven\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.12.5\jackson-datatype-jsr310-2.12.5.jar;F:\tools\maven\s_warehouse\maven\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.12.5\jackson-module-parameter-names-2.12.5.jar;F:\tools\maven\s_warehouse\maven\repository\org\springframework\boot\spring-boot-starter-tomcat\2.5.5\spring-boot-starter-tomcat-2.5.5.jar;F:\tools\maven\s_warehouse\maven\repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.53\tomcat-embed-core-9.0.53.jar;F:\tools\maven\s_warehouse\maven\repository\org\apache\tomcat\embed\tomcat-embed-el\9.0.53\tomcat-embed-el-9.0.53.jar;F:\tools\maven\s_warehouse\maven\repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.53\tomcat-embed-websocket-9.0.53.jar;F:\tools\maven\s_warehouse\maven\repository\org\springframework\spring-web\5.3.10\spring-web-5.3.10.jar;F:\tools\maven\s_warehouse\maven\repository\org\springframework\spring-beans\5.3.10\spring-beans-5.3.10.jar;F:\tools\maven\s_warehouse\maven\repository\org\springframework\spring-webmvc\5.3.10\spring-webmvc-5.3.10.jar;F:\tools\maven\s_warehouse\maven\repository\org\springframework\spring-aop\5.3.10\spring-aop-5.3.10.jar;F:\tools\maven\s_warehouse\maven\repository\org\springframework\spring-context\5.3.10\spring-context-5.3.10.jar;F:\tools\maven\s_warehouse\maven\repository\org\springframework\spring-expression\5.3.10\spring-expression-5.3.10.jar;D:\work\tools\ideaIC-2024.2.3.win\lib\idea_rt.jar" com.hello.HelloWorldApplication
Connected to the target VM, address: '127.0.0.1:39131', transport: 'socket'.   ____          _            __ _ _/\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\\/  ___)| |_)| | | | | || (_| |  ) ) ) )'  |____| .__|_| |_|_| |_\__, | / / / /=========|_|==============|___/=/_/_/_/:: Spring Boot ::                (v2.5.5)2025-09-29 13:40:41.227  INFO 22508 --- [           main] com.hello.HelloWorldApplication          : Starting HelloWorldApplication using Java 1.8.0_321 on twilight with PID 22508 (D:\work\技术研究\java-demo\springboot-helloworld\target\classes started by ricky in D:\work\技术研究\java-demo\springboot-helloworld)
2025-09-29 13:40:41.230  INFO 22508 --- [           main] com.hello.HelloWorldApplication          : No active profile set, falling back to default profiles: default
2025-09-29 13:40:42.982  INFO 22508 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8001 (http)
2025-09-29 13:40:42.997  INFO 22508 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2025-09-29 13:40:42.997  INFO 22508 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.53]
2025-09-29 13:40:43.123  INFO 22508 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2025-09-29 13:40:43.123  INFO 22508 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1834 ms
2025-09-29 13:40:43.601  INFO 22508 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8001 (http) with context path ''
2025-09-29 13:40:43.610  INFO 22508 --- [           main] com.hello.HelloWorldApplication          : Started HelloWorldApplication in 3.053 seconds (JVM running for 4.072)

4、本地访问springboot项目

5、打包springboot项目

(二)、Linux环境下相关工作

1、创建docker目录

/usr/local/ricky/docker

2、上传相关文件

在docker目录创建target,并且将springboot-helloworld-0.0.1.jar上传到该目录中,另外把Dockerfile上传到docker目录中。

3、在docker文件夹下构建项目的镜像

在dokcer目录下面执行如下命令:

docker build -t docker .

执行界面如下:

4、查看产生的镜像

执行命令:

docker images

5、启动docker容器

docker run -d -p 8001:8001 docker

6、查看java进程

ps -ef | grep java

7、查看docker日志

docker logs 03c43b7d44e3856a45410ab0c510b83ee93081eba0b763435c6fa26f868f10df

8、访问docker容器服务

服务器上访问:curl http://127.0.0.1:8001/helloWorld

在windows访问:http://XX.XX.XX.XX:8001/helloWorld

8、停止docker容器服务

docker stop 03c43b7d44e3856a45410ab0c510b83ee93081eba0b763435c6fa26f868f10df

http://www.dtcms.com/a/424332.html

相关文章:

  • 【Redis学习】String字符串
  • 项目实战:ecshop
  • 白城北京网站建设邵阳小学网站建设
  • SpringBoot 的配置文件与日志
  • 物联网技术与应用第三节课笔记
  • 【Java】P10 面向对象编程完全指南(S1-2 基础篇 包管理与导入)
  • C++ 特性 --内部类 模板类中取出来类类型问题
  • ip地址直接访问网站东莞市网络seo推广企业
  • 5090裸金属租用:捷智算助力企业数字化转型
  • 北京网站建设设计南阳网站建设哪家好
  • 大模型原理与实践:第一章-NLP基础概念完整指南_第1部分-概念和发展历史
  • 国企门户网站建设方案电子商务网站策划方案
  • 【Linux】cgdb调试工具的使用
  • 南京建设网站要多少钱线上推广活动
  • 做网站专题页需要注意什么app制作开发报价
  • iTerm2使用Shell Integration优雅地实现单个文件上传与下载
  • 怎样做网站漂浮精通网站开发
  • 西安网站制作sxyun昆明网站建设公司哪家好
  • 突破NER性能瓶颈:BERT与LLM协同的混合架构实践
  • 网站建设与管理课件seo排名优化联系13火星软件
  • 网站做前端去国外做外卖网站
  • 分布式任务事务框架设计与实现方案
  • 漳州 网站建设多少钱成都旅游攻略景点必去
  • pytorch基本运算-torch.normal()函数生成的随机数据添加噪声
  • 通辽建设工程网站网上做效果图网站有哪些
  • DragonBalls_One013
  • 湖南网站建设哪家有定制软件如何收费
  • 专门做招商的网站是什么wordpress两栏
  • 七彩喜艾灸机器人:传统技艺与AI的共生共舞
  • svn: E200009