【小白入门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=lt

COPY target/*.jar /app.jar

ENTRYPOINT ["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

相关推荐
带刺的坐椅12 分钟前
Solon v3.4.7, v3.5.6, v3.6.1 发布(国产优秀应用开发框架)
java·spring·solon
四谎真好看2 小时前
Java 黑马程序员学习笔记(进阶篇18)
java·笔记·学习·学习笔记
桦说编程2 小时前
深入解析CompletableFuture源码实现(2)———双源输入
java·后端·源码
java_t_t2 小时前
ZIP工具类
java·zip
lang201509282 小时前
Spring Boot优雅关闭全解析
java·spring boot·后端
IT_Octopus2 小时前
triton backend 模式docker 部署 pytorch gpu模型 镜像选择
pytorch·docker·triton·模型推理
二宝1522 小时前
黑马商城day4-微服务02
微服务·云原生·架构
pengzhuofan3 小时前
第10章 Maven
java·maven
百锦再4 小时前
Vue Scoped样式混淆问题详解与解决方案
java·前端·javascript·数据库·vue.js·学习·.net
刘一说4 小时前
Spring Boot 启动慢?启动过程深度解析与优化策略
java·spring boot·后端