docker Compose部署springboot+vue前后端分离

温馨提示:如果有自己的服务器最好不过了,这样部署网项目就可以上线了。没有的话,只能使用localhost 本机访问啦,记得替换 ngixn 中的ip地址、域名为localhost。

(一) 准备工作

一、安装

1、安装Docker并配置阿里云仓库加速

① 环境查看,选择对应的docker的安装版本:

docker 帮助文档:https://docs.docker.com/get-started/overview/
# 先查看发行版 cat /etc/os-release # 若是redhat,查看系统信息: cat /etc/redhat-release # 若是debain,查看系统信息: cat /etc/debian_version

2、安装Docker

选择linux版本的docker安装教程

# 1、卸载旧版本: sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine # 2、使用仓库安装 # 需要的安装包 sudo yum install -y yum-utils # 官网提供的仓库,下载速度太慢【默认是国外的,我们不要使用国外的,需要使用国内阿里云镜像地址】 # 不用官网的仓库,选择阿里云的仓库 sudo yum-config-manager –add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 更新yum 软件包索引 yum makecache fast # 3、安装 Docker 引擎 docker-ce 社区 docker-ee 企业版 yum install docker-ce docker-ce-cli containerd.io # 4、启动 Docker systemctl start docker # 检查是否成功启动 docker version # 5、测试hello-world docker run hello-world # 查看下载的镜像 docker images # 6、了解卸载工作: # 卸载 Docker 引擎(卸载依赖) sudo yum remove docker-ce docker-ce-cli containerd.io # 删除所有映像、容器和卷(珊除资源) /var/lib/docker 是docker默认的工作路径 sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd

2-2、阿里云镜像加速

登录阿里云官网,点击控制台,找到产品与服务,搜容器镜像服务

%docker Compose部署springboot+vue前后端分离-猿站网-插图

镜像加速器:

%docker Compose部署springboot+vue前后端分离-1猿站网-插图

配置使用:

sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-“EOF” { “registry-mirrors”: [“https://o10wzpax.mirror.aliyuncs.com”] } EOF sudo systemctl daemon-reload sudo systemctl restart docker

3、安装DockerCompose

(1) 下载

# 官网提供的下载地址太慢了 # 使用daocloud提供的下载速度更快 curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

(2) 授权

sudo chmod +x /usr/local/bin/docker-compose

(3) 验证是否安装成功:

[root@iZwz9535z41cmgcpkm7i81Z bin]# docker-compose –version docker-compose version 1.29.1, build c34c88b2

二、修改生产环境下的配置以及打包操作:

前端、后端增加生产环境配置,然后修改:项目主机号、请求路径以及将mysql和redis的主机号修改为docker compose的服务名

1、修改前后端配置文件的项目主机号

前端修改配置访问后端路径,后端改的就是跨域配置允许前端访问的路径

前端生产环境配置:

%docker Compose部署springboot+vue前后端分离-2猿站网-插图

后端生产环境配置(跨域配置):

%docker Compose部署springboot+vue前后端分离-3猿站网-插图

2、修改前后端配置文件的项目请求路径

%docker Compose部署springboot+vue前后端分离-4猿站网-插图

后端项目暴露的端口是8888,编写docker-compose.yaml时记得暴露

3、后端生产环境的配置把mysql和redis的主机号修改为docker compose的服务名

%docker Compose部署springboot+vue前后端分离-5猿站网-插图

4、打包

(1) 前端打包命令:npm run build

打包生成了一个dist包

(2) 后端是多环境配置,打包记得把依赖一起打包:

记得配置激活的配置环境为 prod,如果忘记在springboot 配置中环境配置了,还可以在制作spirngboot镜像的dockerfile 中指明 生产环境是prod

# springboot 中 application-prod.properties文件中配置 spring.profiles.active=prod

%docker Compose部署springboot+vue前后端分离-6猿站网-插图

打包记得把依赖一起打包:

%docker Compose部署springboot+vue前后端分离-7猿站网-插图

%docker Compose部署springboot+vue前后端分离-8猿站网-插图

%docker Compose部署springboot+vue前后端分离-9猿站网-插图

(二) 开始部署

# 创建 /mnt/docker/ 目录 mkdir -p /mnt/docker/ cd /mnt/docker/

接下来:

① 编写构建各个项目模块的Dockerfile

② 编写docker-compose.yaml

③ mysql、redis、nginx的配置

④ 启动dockerCompose编排

⑤ 导入数据[数据库表数据、前端静态web资源]

⑥ 测试访问,并排除错误

一、blog_api 制作镜像

1、上传打包生成的jar包,上传到/mnt/docker/ 目录,并修改jar包的包名为 blog_api.jar

2、编写镜像文件 api_dockerfile:

FROM java:8 MAINTAINER shan <test@qq2363581677@163.com> ADD ./blog_api.jar /api.jar CMD java -jar /api.jar –spring.profiles.active=prod

3、构建生成镜像 api:

命令: docker build -f dockerfile路径 -t 自定义镜像名称 .

# blog_api 生成镜像 docker build -f ./api_dockerfile -t api .

二、dockerCompose编排

1、编写 docker-compose.yaml

version: “3” services: mysql: image: mysql:5.7 container_name: mysql volumes: – /mnt/docker/mysql/conf:/etc/mysql/conf – /mnt/docker/mysql/logs:/logs – /mnt/docker/mysql/data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: admin redis: image: redis container_name: redis volumes: – /mnt/docker/redis/data:/data api: image: api container_name: api expose: – “8888” depends_on: – mysql – redis nginx: image: nginx container_name: nginx ports: – 80:80 – 443:443 volumes: – /mnt/docker/nginx/:/etc/nginx/ – /mnt/shan/blog:/shan/blog links: – api depends_on: – api

2、dockercompose 进行编排

★ 前提:mysql、redis、nginx的配置文件配置好后才可以进行编排

# 切换到docker-compose.yaml目录下,启动容器 cd /mnt/docker/ docker-compose up docker-compose up -d #代表后台启动 docker-compose down #停止并删除容器 docker-compose start #启动已有容器 docker-compose stop #停止运行的容器

三、mysql、redis、nginx的配置:

1、mysql的配置:

① mysql 服务在docker-compose.yaml 中的编写内容为:

mysql: volumes: – /mnt/docker/mysql/conf:/etc/mysql/conf

② 挂载mysql的配置文件:

mkdir -p /mnt/docker/mysql/conf cd /mnt/docker/mysql/conf # 编写my.cnf文件[vim my.cnf]
[mysqld] # # Remove leading # and set to the amount of RAM for the most important data # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. # innodb_buffer_pool_size = 128M # # Remove leading # to turn on a very important data integrity option: logging # changes to the binary log between backups. # log_bin # # Remove leading # to set options mainly useful for reporting servers. # The server defaults are faster for transactions and fast SELECTs. # Adjust sizes as needed, experiment to find the optimal values. # join_buffer_size = 128M # sort_buffer_size = 2M # read_rnd_buffer_size = 2M datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock character-set-server=utf8 # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 lower_case_table_names=1 pid-file=/var/run/mysqld/mysqld.pid sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

2、redis的配置:

① redis 服务在docker-compose.yaml 中的编写内容为:

redis: volumes: – /mnt/docker/redis/data:/data

由于没有挂载配置文件,所有不用挂载redis的配置

3、nginx的配置:

① nginx 服务在docker-compose.yaml 中的编写内容为:

nginx: volumes: – /mnt/docker/nginx/:/etc/nginx/ #配置文件 – /mnt/shan/blog:/shan/blog # web资源

② 挂载nginx的配置文件:

mkdir -p /mnt/docker/nginx/ cd /mnt/docker/nginx/ # 编写nginx 配置文件

nginx基本配置,编写nginx.conf文件[vim nginx.conf]:

user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { 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; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; }

nginx基本配置文件nginx.conf中include了一个mime.types配置文件:

上传mime.types配置文件:

mime.types配置文件: 在nginx安装包的conf目录下,下载一个nginx获取,然后进行上传 mime.types的上传目录:结合dockercompose中数据卷的挂载点,推断出 /mnt/docker/nginx/
cd /mnt/docker/nginx/ # 使用xftp工具上传mime.types配置文件

注意:没有自己的服务器,把下面 blog.conf配置 中的域名server_name 改为localhost,并且没有ssl证书,记得把443(https 协议端口号) 的配置去掉,并把80(http协议端口号)rewrite 部分去掉。

nginx配置文件blog.conf 记得将配置文件的中文注释去除再复制粘贴。

mkdir -p /mnt/docker/nginx/conf.d cd /mnt/docker/nginx/conf.d # 编写blog.conf文件[vim blog.conf]
gzip_min_length 1k; gzip_buffers 4 16k; gzip_comp_level 2; gzip_vary off; upstream apistream{ server api:8888; } server{ listen 80; server_name blog.yilele.site; rewrite ^(.*) https://blog.yilele.site/$1 permanent; } server { listen 443 ssl; server_name blog.yilele.site; index index.html; ssl_certificate /etc/nginx/ssl/blog.yilele.site.pem; ssl_certificate_key /etc/nginx/ssl/blog.yilele.site.key; ssl_session_timeout 5m; location /api {#请求https://blog.yilele.site/api 会代理转发到 api:8888 proxy_pass http://apistream; } location / { root /shan/blog/; index index.html; } location ~* .(jpg|jpeg|gif|png|swf|rar|zip|css|js|map|svg|woff|ttf|txt)$ { root /shan/blog/; index index.html; add_header Access-Control-Allow-Origin *; } }

③ 配置nginx的ssl证书

申请、下载和上传服务器的ssl证书

下载ssl证书:要选择nginx类型的下载 上传nginx的ssl证书:要注意证书文件的名称、证书格式和咱配置在nginx的配置文件保持一致
# nginx的配置文件: server{ listen 80; server_name blog.yilele.site; #域名 ….. } # ssl的PEM 证书通常具有以下扩展: .pem、.crt、.cer 和.key ssl_certificate /etc/nginx/ssl/blog.yilele.site.pem;#nginx的ssl公钥,注意是pem后缀,可以根据阿里云ssl下载的格式填写 ssl_certificate_key /etc/nginx/ssl/blog.yilele.site.key;#nginx的ssl私钥 # 再根据 docker-compose.yml 文件推出ssl证书上传的目录: volumes: – /mnt/docker/nginx/:/etc/nginx/

上传ssl证书:

mkdir -p /mnt/docker/nginx/ssl cd /mnt/docker/nginx/ssl # 使用xftp工具上传ssl证书(blog.yilele.site.pem、blog.yilele.site.key)

可以启动dockercompose 进行编排啦~

四、导入数据[数据库表的数据、前端静态web资源]

1、导入数据库表的数据

(1) 导入sql文件

① mysql的挂载信息:

volumes: ….. – /mnt/docker/mysql/data:/var/lib/mysql

② 数据库视图工具navicat 把表导出sql文件:

%docker Compose部署springboot+vue前后端分离-10猿站网-插图

③ 上传sql文件(文件名:blog.sql):

在数据库中创建和 sql文件(blog.sql)对应的数据库名blog

cd /mnt/docker/mysql/data # 使用 xftp 将 blog.sql 进行传输

(2) 执行sql文件(创建blog 数据库并导入数据)

# 进入mysql容器: docker exec -it mysql bash # 切换到挂载目录(blog.sql 所在目录): cd /var/lib/mysql # 查看该目录下所有文件: ls # 可以看到blog.sql也在该目录下

接下来在docker中执行该sql:

mysql -uroot -p # 输入密码 admin ,进入docker中的数据库 # 创建数据库 create database blog; # 退出回到容器 exit # 在/var/lib/mysql目录下,将文件blog.sql导入数据库 mysql -u root -p blog < blog.sql; # 输入密码 admin # 重新进入数据库,切换数据库 mysql -uroot -p # 输入密码 admin ,进入docker中的数据库 use blog; # 执行sql并保存数据库 source blog.sql; # 执行source命令可能会报错,打不开blog.sql 文件,这个问题可以忽略。

将.sql文件导入数据库命令:mysql -u 用户名 -p 数据库(blog) < 要导入的数据库数据(blog.sql)

结果检查

use blog; show tables; select * from ms_admin;

如果能查出来结果,那就说明我们的mysql导入sql文件成功了。

%docker Compose部署springboot+vue前后端分离-11猿站网-插图

退出mysql数据库:exit 退出mysql容器:exit

(3) 检查mysql的配置

● 编排dockerCompose之后检查docker中mysql的配置是否成功:

docker logs -f mysql

没有看到报错信息即成功(警告信息可以忽略)

2、导入前端静态web资源

(1) nginx 前端web资源的配置:

volumes: …… – /mnt/shan/blog:/shan/blog # web资源
# 在log目录用于上传前端的web资源(打包工具打包生成的html、css、js、图片等) cd /mnt/shan/blog # 使用xftf 上传web资源

(2) 手动压缩前端dist包,上传到 /mnt/shan/blog 目录

手动压缩:是为了提高传输速度 安装解压缩工具:
#获取安装列表 yum安装列表中搜索zip/unzip是否存在 yum list|grep zip yum list|grep unzip #执行安装支持zip命令 yum install -y zip #执行安装支持unzip命令 yum install -y unzip

上传web资源(dist 压缩包)

# 使用xftf 上传web资源 # 解压 unzip dist.zip

%docker Compose部署springboot+vue前后端分离-12猿站网-插图

可以测试排错啦~

五、测试并排除错误:

(1) 测试:

api 模块的测试:访问 https://blog.yilele.site/

● 当我们觉得部署完全搞定的时候,就可以docker-compose up -d 后台启动,这样的话关掉远程连接也能运行了。

(2) 排查错误:

docker 常用命令:

# 容器命令 ● 查看运行的容器:docker ps ● 删除容器:docker rm -f 容器id或容器名称 ● 删除所有容器:docker rm -f $(docker ps -aq) ● 创建、启动并进入容器: docker run -it 容器id或容器名称 bash ● 进入启动过的容器: docker exec -it 容器id或容器名称 bash ● 退出容器:【停止容器】exit 【非停止容器】ctr+p+q ● 启动容器:docker start 容器id # 镜像命令 ● 查看所有镜像: docker images ● 删除镜像: docker rmi -f 镜像id ● 删除所有镜像: docker rmi -f $(docker images -aq)

dockerCompose 常用命令:

# 切换到docker-compose.yaml目录下,启动容器 docker-compose up docker-compose up -d #代表后台启动 docker-compose down #停止并删除容器 docker-compose start #启动已有容器 docker-compose stop #停止运行的容器

查看日志进行排查错误:

# 查看后端项目的错误-日志(进入docker-compose的目录下): cd /mnt/docker/ docker-compose logs # 查看服务端ngix-日志: docker logs nginx

到此这篇关于docker Compose部署springboot+vue前端端分离的文章就介绍到这了,更多相关docker Compose部署springboot vue内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文地址:https://blog.csdn.net/weixin_45630258/article/details/126094501

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

docker安装redis并挂载到本地的详细教程

2023-3-3 17:04:08

建站知识

小知识:什么是MD5算法?有何用?

2023-3-3 17:07:35

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索