Docker+nginx部署SpringBoot+vue前后端分离项目
Docker+nginx部署SpringBoot+vue前后端分离项目
一、配置环境
1、Docker安装
从Ubuntu的仓库直接下载安装。安装比较简单,但是这种安装的Docker不是最新版本。
1 | # 安装 |
查看是否成功,输出
1 | > docker -v |
2、安装Docker-compose
进入https://github.com/docker/compose/releases 查看最新版本
1 | sudo curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose |
设置权限
1 | sudo chmod +x /usr/local/bin/docker-compose |
查看是否安装成功
1 | > docker-compose --version |
二、编排容器,打包部署
1、打包JAVA应用容器镜像
先将java项目打包成jar包,这里不过多说明。如我们的jar包名为:myapp.jar
编写Dockerfile
,负责打包java应用
1 | FROM java:8 # 基于java8 |
注意:这里暂时这么写就行,打包的工作交给docker-compose
自动完成
2、编写docker-compose.yml
文件,编排容器
1 | version: '3' |
当我们按照这个配置编排好容器,运行起来时,即可以理解为,我们已经安装好了需要的服务,如mysql
,redis
等
3、更改java项目中的配置文件
具体来说就是我们之前单独写java
项目时,用的可能是本地或者远程的数据库等服务,现在部署的时候需要将这些服务替换成我们编排好的docker
服务
小提示:这里可以新建一个
application-docker.yml
文件,我们在运行程序时,指定配置文件即可如:
JAVA -jar /app.jar --spring.profiles.active=docker
这一步执行起来也较为简单,用第二步中的服务名称,如mysql
,redis
等,替换java项目配置文件中的localhost
,服务器ip
等即可。
1 | spring: |
这样配置之后,当应用访问mysql
等服务时,会自动找到相应容器
4、部署前端Vue项目
4.1 打包vue项目
1 | npm run build |
之后在项目根目录会多出一个dist
文件夹,里面的内容就是我们要的,直接将里面的所有内容打包发送至服务器指定的nginx
设置的位置/root/nginx/html
即可。例如:
4.2 编写nginx.conf
文件
有两点需要注意:
1、删除了注释,加上一句话try_files
,针对vue
打包的项目的
2、指定根目录为/usr/share/nginx/html
,这里和compose
中的配置是对应的,指的是nginx
容器中映射的位置。
详细nginx.conf
配置文件
1 | #user root; |
最后呢,我们需要把打包的文件放入宿主机的/root/nginx/html
中,容器就可以在/usr/share/nginx/html
中找到文件啦(这里的两个文件夹在前文中docker-compose.yaml
设置过了)
将nginx.conf
文件放入/root/nginx/nginx.conf
(这个位置也是前文设置的)
5、一切就绪,部署
将jar包
,Dockerfile
,docker-compose.yml
一起上传至服务器,准备打包,这里最好是同一位置(其他位置也行,compose文件里面配置了自己要打包的镜像的位置,只要能找到就行)
详细文件目录为:
1 | . |
拉取、构建镜像,以服务形式运行
1 | docker-compose up -d # -d 以服务形式运行 |
运行结果:
先是拉取nginx
,mysql
,redis
镜像
构建我们的app:
运行完成
注意:期间如果遇到构建镜像错误,可能需要删除错误的镜像,停止相应容器等。否则可能一直运行的都是旧的镜像
再次注意:这里的mysql仍然没有配置好数据库,需要进入容器,导入数据库
三、参考
教你Docker+nginx部署SpringBoot+vue前后端分离项目_哔哩哔哩_bilibili
Ubuntu18.04安装docker、docker-compose、 - 软刺sec - 博客园 (cnblogs.com)