使用docker-compose部署springboot项目

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

最近学习了一下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

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值