docker 安装jdk_基础:使用Docker部署SpringBoot项目

作者 | LanceLi

来源 | urlify.cn/eQvaea

66套java从入门到精通实战课程分享

一、环境 | 步骤

  • 使用的虚拟机安装Ubuntu20.04,Ubuntu里面安装了docker,还需要安装JDK和Maven
  • 在Win10上的Idea写好一个SpringBoot的Demo项目打包后传到Ubuntu中
  • 先用mvn package打包项目并运行 测试项目是否能成功跑起来
  • 最后用mvn package docker:build 打成Docker镜像
  • 注意事项(看了其他的博客,然后打镜像的时候报各种异常):
    • 项目名也就是artifactId最好也是小写
    • docker镜像名最好要小写

二、新建一个SpringBoot项目

2.1pom.xml

        org.springframework.boot        spring-boot-starter-parent        2.0.4.RELEASE                            org.springframework.boot            spring-boot-starter-web                            org.springframework.boot            spring-boot-starter-test            test                            dockerdemoservice                                            org.springframework.boot                spring-boot-maven-plugin                                                    com.spotify                docker-maven-plugin                1.0.0                                    ${docker.image.prefix}/${project.artifactId}                    src/main/docker                                                                        /                            ${project.build.directory}                            ${project.build.finalName}.jar                                                                                                

2.2启动类

@SpringBootApplicationpublic class Application {    public static void main(String[] args) {        SpringApplication.run(Application.class,args);    }}

2.3Controller

@RestControllerpublic class DockerController {    @GetMapping("/docker")    public String getString() {        return "dockerDemo is run";    }}

2.4在src/main下新建一个docker的目录

也就是src/main/docker。注意是目录不是package

  • 在src/main/docker下新建一个Dockerfile的文件
FROM openjdk:8-jdk-alpineVOLUME /tmpADD dockerdemoservice-1.0-SNAPSHOT.jar app.jarENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
  • 这个 Dockerfile 文件很简单,构建 Jdk 基础环境,添加 Spring Boot Jar 到镜像中:
    • FROM ,表示使用 Jdk8 环境 为基础镜像,如果镜像不是本地的会从 DockerHub 进行下载
    • VOLUME ,VOLUME 指向了一个/tmp的目录,由于 Spring Boot 使用内置的Tomcat容器,Tomcat 默认使用/tmp作为工作目录。这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录
    • ADD ,拷贝文件并且重命名
    • ENTRYPOINT ,为了缩短 Tomcat 的启动时间,添加java.security.egd的系统属性指向/dev/urandom作为 ENTRYPOINT
  • 在本地运行没问题,然后传到Ubuntu里解压

三、打docker镜像

  • 项目打压缩包放到Ubuntu里正常的应该是用git或svn拉代码,这里为了方便直接copy到服务器里
cd /home/lanceli/code/dockerdemoservice # dockerdemoservice 是我的demo项目ls # 可以看到src pom.xml 就是在这一级目录使用mvn打包mvn package # 先打成jar包,然后会生成一个target目录cd targetjava -jar dockerdemoservice-1.0-SNAPSHOT.jar # 可以看到spring boot的Log,然后请求controller 如果成功说明没问题cd /home/lanceli/code/dockerdemoservice # 回到项目的目录中mvn package docker:build # 打成docker镜像,看到BUILD SUCCESS后说明成功
  • 查看镜像并运行
sudo docker images # openjdk之前是没有的,自动pull下来的REPOSITORY TAG IMAGE ID CREATED SIZEdockerdemoservice/dockerdemoservice latest ea60d12b0337 24 minutes ago 121MBjenkins/jenkins lts 697d76eba014 8 days ago 677MBnginx latest 4bb46517cac3 11 days ago 133MBportainer/portainer latest 62771b0b9b09 4 weeks ago 79.1MBopenjdk 8-jdk-alpine a3562aa0b991 15 months ago 105MBsudo docker run -d -p 8080:8080 dockerdemoservice/dockerdemoservice # 运行刚刚打好的镜像
a6e2941996804bfec5606d7b12954b81.png
sudo docker images # openjdk之前是没有的,自动pull下来的REPOSITORY TAG IMAGE ID CREATED SIZEdockerdemoservice/dockerdemoservice latest ea60d12b0337 24 minutes ago 121MBjenkins/jenkins lts 697d76eba014 8 days ago 677MBnginx latest 4bb46517cac3 11 days ago 133MBportainer/portainer latest 62771b0b9b09 4 weeks ago 79.1MBopenjdk 8-jdk-alpine a3562aa0b991 15 months ago 105MBsudo docker run -d -p 8080:8080 dockerdemoservice/dockerdemoservice # 运行刚刚打好的镜像
  • 测试访问
    • 我在win10上访问ubuntu的IP,加上映射的8080端口
    • http://192.168.18.135:8080/docker 可以访问到我的接口
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以按照以下步骤在Linux中使用Docker部署Spring Boot项目使用JDK 11): 1. 首先,确保你已经在Linux上安装Docker。你可以使用以下命令来验证Docker是否已经安装: ``` docker --version ``` 如果没有安装,请参考Docker官方文档进行安装。 2. 创建一个新的文件夹用于存放你的Spring Boot项目。在该文件夹中,创建一个名为 `Dockerfile` 的文件,并添加以下内容: ```Dockerfile FROM adoptopenjdk:11-jdk-hotspot ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-jar","/app.jar"] ``` 这个Dockerfile使用了 `adoptopenjdk` 镜像作为基础,然后将你的Spring Boot项目的jar文件复制到Docker容器中,并使用 `java -jar` 命令运行它。 3. 在你的Spring Boot项目的根目录中,打开一个终端窗口,并构建Docker镜像。运行以下命令: ``` docker build -t my-spring-boot-app . ``` 这将使用上述的Dockerfile构建一个名为 `my-spring-boot-app` 的Docker镜像。确保在命令的末尾有一个 `.`,它表示Dockerfile位于当前目录。 4. 构建成功后,你可以运行该Docker镜像并将Spring Boot应用程序部署为一个容器。使用以下命令: ``` docker run -p 8080:8080 my-spring-boot-app ``` 这将运行容器并将容器的8080端口映射到主机的8080端口。你可以根据需要更改端口映射。 现在,你的Spring Boot项目应该已经成功地在Docker容器中运行了,并且可以通过访问 `http://localhost:8080` 在主机上进行访问

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值