• Docker快速部署springboot项目


    本文概述

    本文主要介绍了怎么将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配置的文件夹和文件

    1. mkdir -p /root/nginx
    2. mkdir -p /root/nginx/html
    3. mkdir -p /root/nginx/log
    4. touch /root/nginx/nginx.conf
    5. touch /root/nginx/log/error.log
    6. touch /root/nginx/log/access.log

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

    1. # 用户配置
    2. user nginx;
    3. worker_processes auto;#工作线程数
    4. # 错误日志和进程ID文件的路径
    5. error_log /root/nginx/error.log;
    6. pid /run/nginx.pid;
    7. # 工作模式和连接数设置
    8. events {
    9. worker_connections 1024;
    10. }
    11. # HTTP 服务器配置
    12. http {
    13. # 包含 mime 类型映射
    14. include /etc/nginx/mime.types;
    15. default_type application/octet-stream;
    16. # 日志设置
    17. log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    18. '$status $body_bytes_sent "$http_referer" '
    19. '"$http_user_agent" "$http_x_forwarded_for"';
    20. access_log /var/log/nginx/access.log main;
    21. # 发送配置
    22. sendfile on;
    23. tcp_nopush on;
    24. tcp_nodelay on;
    25. keepalive_timeout 65;
    26. types_hash_max_size 2048;
    27. # 包含其他配置文件
    28. include /etc/nginx/conf.d/*.conf;
    29. # Server configuration
    30. server {
    31. listen 80; # 监听HTTP标准端口
    32. server_name api.test.com; # 服务器的域名或者ip
    33. location / {
    34. proxy_pass http://test:8080; # 将请求转发到后端服务
    35. proxy_set_header Host $host;
    36. proxy_set_header X-Real-IP $remote_addr;
    37. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    38. proxy_set_header X-Forwarded-Proto $scheme;
    39. }
    40. }
    41. }

    这是一份最基础的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这个平台上与同样爱好人工智能的小伙伴交流分享,一起进步。谢谢大家鸭~~~

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

    尾言

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

  • 相关阅读:
    c语言:解决数组中数组缺少单个的元素的问题
    小啊呜产品读书笔记001:《邱岳的产品手记-05》第9讲 产品案例分析:Hopper的“人工智能” & 第10讲 产品被抄袭了怎么办?
    C/C++轻量级并发TCP服务器框架Zinx-框架开发001: 读取标准输入,回显到标准输出
    2022年“网络安全”赛项驻马店市赛选拔赛 任务书
    k8s修改集群IP--不重置集群
    跑步装备品牌排行榜,2022年跑者必备好物推荐
    爬虫框架 Scrapy 详解
    Mysql主从复制,读写分离
    表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
    nVisual信息基础设施可视化管理
  • 原文地址:https://blog.csdn.net/qq_35768355/article/details/139194510