本文概述

本文主要介绍了怎么将springboot项目打包为docker镜像,并如何在后端服务器上使用docker快速部署springboot应用和nginx应用。

一、打包springboot项目

1、复制原来的application.yml文件然后重命名为application-pro.yml文件,将application-pro.yml里面的数据库配置等修改为实际生产环境中的配置。

2、点击IDEA右侧的Maven按钮,会弹出Maven的管理面板

然后先双击clean,然后在双击package,等待打包完成。

打包完成后,在target目录下可以找到打包好的jar包和original文件

然后将这两个文件上传到服务器任意目录下,待用。

3、新建一个Dockerfile文件,没有后缀,名字只能是Dockerfile

然后编写Dockerfile配置,其中的--spring.profiles.active=pro是指启用我们之前配置的application-pro.yml文件。

编写完成后,将Dockerfile文件上传到跟之前上传的jar包同一个目录下

4、使用CD指令,进入jar包,Dockerfile文件的目录下

cd /root/test

然后将jar包,打包成镜像

docker built -t testapp:v0.0.1.2 .

其中的testapp是镜像名,v0.0.1.2是版本号,注意不要漏写了最后的 .

然后我们查看一下镜像列表,看看我们有没有成功打包成镜像

docker images

如果镜像名出现在列表里面说明,我们的打包工作就完成了

二、创建网络

我们使用命名去创建一个网络,以便宿主机内在同一个网络下的各个容器能够相互通信

docker network create --driver bridge test_net

其中的test_net是网络名,可以自行修改

三、部署springboot应用

docker run -d --name test --network test_net -p 8080:8080 testapp:V0.0.1.2

其中 test是容器名 test_net是网络名 testapp是镜像名

然后我们查看下正在运行的容器,看我们新创建的容器有没有正常运行

docker ps

如上图所示就是正在运行了。

四、部署nginx

先使用命令在宿主机创建出保存nginx配置的文件夹和文件

mkdir -p /root/nginx

mkdir -p /root/nginx/html

mkdir -p /root/nginx/log

touch /root/nginx/nginx.conf

touch /root/nginx/log/error.log

touch /root/nginx/log/access.log


然后我们对宿主机上的nginix.conf进行配置

# 用户配置
user nginx;
worker_processes auto;#工作线程数

# 错误日志和进程ID文件的路径
error_log /root/nginx/error.log;
pid /run/nginx.pid;

# 工作模式和连接数设置
events {
    worker_connections 1024;
}

# HTTP 服务器配置
http {
    # 包含 mime 类型映射
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    # 日志设置
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';

    access_log /var/log/nginx/access.log main;

    # 发送配置
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;

    # 包含其他配置文件
    include /etc/nginx/conf.d/*.conf;

    # Server configuration
    server {
        listen 80;  # 监听HTTP标准端口
        server_name api.test.com;  # 服务器的域名或者ip

        location / {
            proxy_pass http://test:8080;  # 将请求转发到后端服务
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}

这是一份最基础的nginx配置,如有其它需求请自行配置,这里我们只用修改server里面的listen(监听端口号),server_name(这里写你后端服务器的ip,或者域名),proxy_pass(将test替换为你的springboot镜像名和对应的端口号)

然后创建并运行nginx的容器

 docker run -d --name nginx --network test_net -p 80:80 -p 443:443 -v /root/nginx/html:/user/share/nginx/html -v /root/nginx/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/log/error.log:/var/log/nginx/error.log -v /root/nginx/log/access.log:/var/log/nginx/access.log --privileged nginx:latest

这里只用将网络修改为跟springboot应用同一个网络就行了

至此后端服务部署完成,因为数据库用的是专门的一台数据库服务器所以这里没有运行mysql的docker。(完结撒花~)

 作者介绍

作者本人是一名人工智能炼丹师,目前在实验室主要研究的方向为生成式模型,对其它方向也略有了解,希望能够在CSDN这个平台上与同样爱好人工智能的小伙伴交流分享,一起进步。谢谢大家鸭~~~

 如果你觉得这篇文章对您有帮助,麻烦点赞、收藏或者评论一下,这是对作者工作的肯定和鼓励。  

尾言

 如果您觉得这篇文章对您有帮忙,请点赞、收藏。您的点赞是对作者工作的肯定和鼓励,这对作者来说真的非常重要。如果您对文章内容有任何疑惑和建议,欢迎在评论区里面进行评论,我将第一时间进行回复。 

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部