本文概述
本文主要介绍了怎么将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这个平台上与同样爱好人工智能的小伙伴交流分享,一起进步。谢谢大家鸭~~~
如果你觉得这篇文章对您有帮助,麻烦点赞、收藏或者评论一下,这是对作者工作的肯定和鼓励。
尾言
如果您觉得这篇文章对您有帮忙,请点赞、收藏。您的点赞是对作者工作的肯定和鼓励,这对作者来说真的非常重要。如果您对文章内容有任何疑惑和建议,欢迎在评论区里面进行评论,我将第一时间进行回复。