最近学习了一下docker部署springboot项目,想记录一下
准备一个springboot项目demo
里面只有一个接口用来测试
package com.hkd.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author HKD
* @date 2023/2/22 21:28
*/
@RestController
public class DemoController {
@GetMapping("test")
public String test(){
return "项目已启动";
}
}
Dockerfile编写
在项目下新建一个Dockerfile文件(建议安装一下DockDockBuild插件来支持,在idea插件商店)
右键项目名称>>new>>file ,文件名字叫Dockerfile就创建好了
然后加入一下代码
#以java:8为基础镜像
FROM java:8
#暴露8080端口 我的项目用的默认8080端口,你们的项目根据项目的情况选择
EXPOSE 8080
#将项目打包后的jar包添加到镜像中并重命名为app.jar(docker-springboot-demo-1.0-SNAPSHOT.jar就是你们的jar包名称)
ADD docker-springboot-demo-1.0-SNAPSHOT.jar app.jar
#touch命令的作用是修改这个文件的访问时间和修改时间为当前时间。(网上看到的)
RUN bash -c 'touch /app.jar'
#镜像启动时执行的命令,其实就是 docker run时执行'java -jar /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]
docker-compose.yml编写
创建docker-compose.yml文件,然后加入以下代码
#compose文件格式版本号
version: '3'
services:
# nginx镜像
nginx:
# 镜像名和版本号
image: nginx:latest
# 端口映射
ports:
- "80:80"
# 目录挂载(根据项目需要挂载,我的示例项目就只挂载nginx.conf就够了)
volumes:
- /usr/local/app/docker-springboot-demo/nginx/nginx.conf:/etc/nginx/nginx.conf
# 保证容器内的root拥有真正的root权限
privileged: true
# 我们项目的镜像名字(随便取就好了)
demo:
# 镜像名和版本号
image: demo:latest
# 表示从哪个路径构建('.'代表当前路径下,他会寻找当前路径下的Dockerfile文件然后进行构建)
build: .
# 端口映射
ports:
- 8080:8080
Linux部署
先确保docker和docker-compose是否安装,没安装的搜一下,很多教程。
将我们的jar包、Dockerfile、docker-compose.yml这三个文件放到linux的一个目录中。

因为我们的nginx挂载了nginx.conf文件,我们需要一个nginx.conf文件,所以我们先直接启动一个nginx容器,然后把nginx.conf文件拷贝到宿主机上先。
在宿主机上创建nginx目录
mkdir nginx
启动nginx
docker run -d -p 80:80 --name=nginx nginx:latest
拷贝nginx.conf文件
docker cp nginx:/etc/nginx/nginx.conf /usr/local/app/docker-springboot-demo/nginx
停止临时的nginx容器
docker stop nginx
然后我们把nginx.conf的配置文件根据自己的需求编写一下,我这里只是对示例接口做了一个反向代理,配置文件如下
events {
worker_connections 1024;
}
http {
server{
listen 80;
location / {
proxy_pass http://xxx.xxx.xxx.xxx:8080/test;
}
}
}
最后执行以下代码
docker-compose up -d
然后访问自己的ip

文章介绍了如何使用Dockerfile和docker-compose.yml文件将一个简单的SpringBoot应用部署到Linux环境中。首先,创建一个包含测试接口的SpringBoot项目,然后编写Dockerfile,基于Java8镜像并暴露8080端口。接着,创建docker-compose.yml文件定义了nginx和SpringBoot应用的服务。在Linux服务器上,确保Docker和docker-compose安装好,将项目文件上传,并配置nginx反向代理到SpringBoot应用的接口。最后,通过docker-compose命令启动服务,可以访问应用。

9万+

被折叠的 条评论
为什么被折叠?



