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

相关推荐
小刘不想改BUG2 小时前
Docker 部署微服务项目详细步骤
docker·微服务·容器
橄榄熊2 小时前
Docker MySQL 使用全流程
mysql·docker·容器
Mr.Entropy2 小时前
Hibernate批量查询方法全面解析
java·后端·hibernate
绝顶少年3 小时前
Spring 框架中 RestTemplate 的使用方法
java·后端·spring
小趴菜82273 小时前
安卓人机验证View
android·java·前端
观望过往3 小时前
【Java SE 运算符】全面解析与实践指南
java
没有bug.的程序员3 小时前
分布式架构初识:为什么需要分布式
java·分布式·架构·php
Vahala0623-孔勇3 小时前
分布式ID生成终极方案:从Snowflake的时钟回拨到Leaf-segment的ZK锁协调
分布式
郑州光合科技余经理3 小时前
微服务架构:基于Spring Cloud ,构建同城生活服务平台
java·spring cloud·微服务·小程序·架构·uni-app