Docker+nginx部署前后端分离项目
1.下载Docker和Docker-Compose
1.安装Docker
记一次踩坑:误装podman-docker
问题概述:Centos8去下载Docker时,默认装的是podman-docker。当你去执行命令:systemctl start docker时,会出现以下错误:
所以我们必须卸载装的podman-docker,重新安装。
1.卸载podman-docker
yum remove docker
2.下载docker-ce源
curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
3.安装dockers-ce
yum install docker-ce -y
2.安装Docker-Compose
1.下载可能略慢,请耐心等待
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2.给权限
sudo chmod +x /usr/local/bin/docker-compose
3.查看版本,安装成功
docker-compose --version
3.下载nginx
1.拉取nginx镜像
docker pull nginx
2.linux下安装nginx
1.安装nginx依赖
#安装gcc
yum install gcc-c++
#安装PCRE pcre-devel
yum install -y pcre pcre-devel
#安装zlib
yum install -y zlib zlib-devel
#安装Open SSL
yum install -y openssl openssl-devel
2.下载nginx安装包
wget http://nginx.org/download/nginx-1.16.1.tar.gz
3.解压
tar -xvf nginx-1.16.1.tar.gz
4.在usr/local/下创建一个文件夹nginx
#创建一个文件夹
cd /usr/local
mkdir nginx
cd nginx
5.退出文件夹
cd /
6.进入/下的nginx-1.61.1
cd nginx-1.16.1/
7.执行./configure
./configure
8.执行make
make
9.执行make install
make install
10.nginx已完成安装,默认安装目录为
/usr/local/nginx
11.进入安装位置的sbin目录,使用./nginx启动nginx
cd /usr/local/nginx/sbin
./nginx
12.浏览器中输入自己虚拟机/学习机/服务器的IP即可访问
3.修改nginx配置文件
找到自己根目录下的nginx-1.16.1,然后找到conf文件夹,然后将servr中的location全部替换为:
ip地址填写自己的ip,对应端口号分别为前端IP端口号、后台IP端口号
location / {
proxy_pass http://10.21.23.91:8083;
}
location /api {
proxy_pass http://10.21.23.91:7020/api;
}
4.打包前端项目
1.gitlab/github...拉取前端代码到idea,打开idea终端执行以下命令
npm run build
若是失败可以先执行yarn install
2.前端生成的静态包如下所示,最外层的包可以自己命名,此处我自己命名为artifacts
3.将idea连接到远程主机
3.1找到''浏览远程主机''
3.2进行SSH配置
3.3点击测试连接:成功!
3.4不知道虚拟机ip?可在linux终端/Xshell执行:ifconfig -a查询ip:
ens192中的inet之后内容便是:
3.5 添加远程连接
注意:这里的根路径,可以写到:存放DockerFile、docker-compose.yml、前端静态页面包的上一个包为止
此处,我将DockerFile、docker-compose.yml、前端静态页面包全部放到/lbs下
可以看到,我们的学习机根目录下面的包:
修改一下根路径,改为/lbs
此时界面如下
右键添加一个nginx目录
将artifacts包移动到nginx目录下,并修改artifacts文件名为html
在nginx目录下新建文件nginx.conf
在nginx.conf中添加内容如下:
#user root;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8083;
server_name 192.168.184.131;
location / {
root /usr/share/nginx/html;
# nginx 报404需要加下面这行
try_files $uri $uri/ /index.html last;
index index.html index.htm;
#nginx 报405加下面这行
#error_page 405 =200 http://$host$request_uri;
}
#nginx 报 连接错误 、没有数据(We’re sorry but “XXX” doesn’t work...放开下面的注释(我是这个问题,如果不行可以试试方法二)
#location ^~ /api/ {
#proxy_pass http://114.0.0.0:8999/;
#}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location /api {
proxy_pass http://192.168.184.131:7020/api
}
}
}
4.将artifacts包下的内容,全部copy到nginx目录下
5.打包后端springboot代码
1.clean+package
2.target目录下取到jar包
可以自己修改jar包的名字,此处我自己修改为archive.jar
3.将.jar文件直接拖入到远程主机对应存放目录下
4.书写Dockerfile
lbs目录下右键新建文件Dockerfile
Dockerfile文件内容如下
#使用java 8 版本
FROM java:8
COPY archive.jar /archive.jar
CMD ["--server.port=7020"]
#对外暴露的端口
EXPOSE 7020
ENTRYPOINT ["java", "-jar", "/archive.jar"]
写完后一定要记得点击它上传
5.编写dockerfile-compose.yml
右键新建文件,命名为dockerfile-compose.yml
内容如下:
version: "3"
services:
nginx: # 服务名称,用户自定义
image: nginx:latest # 镜像版本
ports:
- 8083:8083 # 前端项目暴露的端口
volumes: # 挂载
# html和nginx.conf 挂载
- /lbs/nginx/html:/usr/share/nginx/html
- /lbs/nginx/nginx.conf:/etc/nginx/nginx.conf
privileged: true # 这个必须要,解决nginx的文件调用的权限问题
archive:
image: archive:latest
build: . # 表示以当前目录下的Dockerfile开始构建镜像
ports:
- 7020:7020 #后端项目暴露的端口
privileged: true
Docker+nginx部署前后端分离项目的更多相关文章
- 使用 Nginx 部署前后端分离项目,解决跨域问题
前后端分离这个问题其实松哥和大家聊过很多了,上周松哥把自己的两个开源项目部署在服务器上以帮助大家可以快速在线预览(喜大普奔,两个开源的 Spring Boot + Vue 前后端分离项目可以在线体验了 ...
- vue+uwsgi+nginx部署前后端分离项目
前后端分离,vue前端提供静态页面,且可以向后台发起get,post等restful请求. django后台提供数据支撑,返回json数据,返回给vue,进行数据页面渲染 后端 创建虚拟环境 解决dj ...
- linux --- 部署前后端分离项目
vue + uwsgi +nginx 部署前后端分离项目 准备项目 1.将前端vue项目包和后端django项目包上传服务器,通过lrzsz,直接从windows拖进linux中 2.解压缩操作 前端 ...
- Nginx部署前后端分离服务
飘过... 一,安装Nginx 二,配置nginx 一般nginx配置文件在etc目录下 另,如何找nginx.conf配置文件: 在前后端分离端项目里,前端的代码会被打包成为纯静态文件.使用 Ngi ...
- centos7部署前后端分离项目的过程
概述 本文主要讲解在安装了centos7的Linux主机中部署前后端分离项目的过程. 前端项目名为:vue_project:后端项目名为:django_project. 将这两个项目放在/opt/wh ...
- 在centos7.6上部署前后端分离项目Nginx反向代理vue.js2.6+Tornado5.1.1,使用supervisor统一管理服务
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_102 这一次使用vue.js+tornado的组合来部署前后端分离的web项目,vue.js不用说了,前端当红炸子鸡,泛用性非常广 ...
- 海纳百川无所不容,Win10环境下使用Docker容器式部署前后端分离项目Django+Vue.js
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_179 随着现代化产品研发的不断推进,我们会发现,几乎每个产品线都会包含功能各异的服务,而且服务与服务之间存在也会存在着错综复杂的依 ...
- Docker Compose 部署前后端分离应用
部署前后端分离应用 容器化 Abp 应用 关于 Abp 应用的容器化,其实和普通的 ASP.NET Core 应用差不多,大家可以参考我此前的文章. 唯一需要注意的是:因为 Abp 解决方案中有多个项 ...
- docker+nginx+redis部署前后端分离项目!!!
介绍本文用的经典的前后端分离开源项目.项目的拉取这些在另一篇博客!!! 其中所需要的前后端打包本篇就不做操作了!!不明白的去看另一篇博客!!! 地址:http://www.cnblogs.com/ps ...
- Linux、Debian、Jenkins、GIT、Nginx、码云安装,自动化部署前后端分离项目
1.安装Jenkins i:下载Jenkins安装包(war文件):https://jenkins.io/download/ ii:这里采用Tomcat的war包方式安装,讲下载好的安装包放到Tomc ...
随机推荐
- Java 动态代理原理图解 (附:2种实现方式详细对比)
动态代理在 Java 中有着广泛的应用,例如:Spring AOP 面向切面编程,Hibernate 数据查询.以及 RPC Dubbo 远程调用等,都有非常多的实际应用@mikechen 目录 ...
- 二、.Net Core搭建Ocelot
上一篇文章介绍了Ocelot的基本概念:https://www.cnblogs.com/yangleiyu/p/15043762.html 本文介绍在.net core中如何使用ocelot. Oce ...
- day17-Servlet06
Servlet06 15.HttpServletResponse 15.1HttpServletResponse介绍 每次HTTP请求,Tomcat都会创建一个HttpServletResponse对 ...
- Idea在windows和mac中的一些快捷指令
从 Windows 过度到 Mac 必备快捷键对照表 Mac 键盘符号说明 ⌘ == Command ⇧ == Shift ⇪ == Caps Lock ⌥ == Option ⌃ == Contro ...
- 镜像制作工具diskimage-builder介绍
简介 diskimage-builder(简称dib)是一款用于构建系统镜像的工具,它被设计用于OpenStack的TripleO项目,支持qocw2.vhd.raw等主流镜像格式. 在众多系统镜像构 ...
- elasticsearch多字段聚合实现方式
目录 1.背景 2.实现多字段聚合的思路 3.需求 4.数据准备 4.1 创建索引 4.2 准备数据 5.实现方式 5.1 multi_terms实现 5.1.1 dsl 5.1.2 java 代码 ...
- DevOps 必备的 Kubernetes 安全清单
Kubernetes 是当今许多公司采用的容器编排平台,它的实施需要对其生态系统有一定的了解,以便部署一个准备好用于生产的集群.然而从原则上来说,Kubernetes 并不是一个安全的平台,因为它缺乏 ...
- Go语言核心36讲20
在上两篇文章中,我主要为你讲解了与go语句.goroutine和Go语言调度器有关的知识和技法. 内容很多,你不用急于完全消化,可以在编程实践过程中逐步理解和感悟,争取夯实它们. 现在,让我们暂时走下 ...
- 网络编程:多进程实现TCP服务端并发、互斥锁代码实操、线程理论、创建线程的两种方式、线程的诸多特性、GIL全局解释器锁、验证GIL的存在
目录 多进程实现TCP服务端并发 互斥锁代码实操 线程理论 创建线程的两种方式 线程的诸多特性 GIL全局解释器锁 验证GIL的存在 GIL与普通互斥锁 python多线程是否有用 死锁现象 多进程实 ...
- 2. 第一个PyQt5 程序 Helloword!
专栏地址 ʅ(‾◡◝)ʃ 第一个 PyQt5 程序 2.1 import sys from PyQt5.QtWidgets import QApplication,QWidget app = QApp ...