使用docker完整搭建前后端分离项目

1、docker的优势,为啥用docker

在这里插入图片描述

2、docker的核心概念

镜像【Image】- 只读模板
容器【Container】- 运行镜像的一个外壳,相当于一个独立的虚拟机
仓库【repository】- 镜像的管理工具,可公开,可私有;类似git仓库

3、centos安装docker

查看是否有docker服务

docker --version
sudo systemctl status docker

-方便添加软件

sudo yum install -y yum-utils

-添加Docker的官方软件源

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

-刷新yum源

sudo yum update

-安装dockery引擎

sudo yum install docker-ce

-启动docker

sudo systemctl start docker

-centos避免每次使用docker都要切换到特权身份

sudo groupadd docker (提示存在执行执行下一行)
sudo usermod -aG docker $USER

-重启docker

sudo systemctl restart docker

-完成这些步骤后,你就可以直接运行Docker命令而不需要sudo,安装完毕

docker -ps 

4、安装常用软件镜像

  • nginx安装
docker run -d -p 80:80  --name nginx nginx
  • mysql安装
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=wuyongqiang -d mysql:5.7
  • reids安装
docker run -d --name redis redis
  • jdk 安装
docker run -d --name jdk openjdk:8

5、使用nginx镜像部署Vue项目

执行命令(一行命令):

docker run 
 -d -p 8080:80 --name ruoyi-web   
 -v /data/conf/nginx.conf:/etc/nginx/nginx.conf
 -v /data/logs/nginx:/var/log/nginx 
 -v /data/web/ruoyi-web/dist:/usr/share/nginx/html 
nginx:latest

执行命令解释:
docker run
#将宿主机的8080端口映射容器的80端口
-d -p 8080:80
#容器命名为mr-web
–name mr-web
#将nginx的配置挂载在宿主机的/data/conf/nginx.conf 下
-v /data/conf/nginx.conf:/etc/nginx/nginx.conf
#将nginx的日志输出到宿主机的/data/logs/nginx目录下
-v /data/logs/nginx:/var/log/nginx
#将要部署的项目挂载在宿主机的/data/web/dist下
-v /data/web/dist:/usr/share/nginx/html
#使用的nginx镜像版本声明
nginx:latest

/home/mr-web/conf nginx.conf配置文件

#user  nobody;
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / {
            # 这里重点关注以下:这里是容器内部地址
            root   /usr/share/nginx/html;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
            error_page 404 index.html;
        }
        #和上面vue文件对应上,访问后端都加mr-api
        #这里看情况,有的vue项目访问后端接口不需要代理
        location /dev-api {
            #rewrite ^/rest/(.*) /$1 break;
            proxy_pass http://124.223.59.141:8081;
            #proxy_cookie_path / /rest;
            proxy_redirect off;
            #client_max_body_size 500m;
            #proxy_set_header X-Real-IP $remote_addr;
            #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

6、使用JDK镜像部署java项目

编写dockerfile文件,制作java-service的镜像

#基础镜像
FROM openjdk:8
#将应用jar挂在到容器内:根服务器的相对路径,容器内的绝对路径
COPY app.jar /data/app.jar
#指定工作目录
WORKDIR /data
#暴露对外端口
EXPOSE 8080
#应用执行命令
CMD ["java", "-jar", "app.jar"]

在dockerfile所在目录下执行镜像构建命令,构建镜像:java-service-name

#构建镜像
docker build -t java-service-name

启动容器运行该镜像

docker run -d java-service-name  -p 8080:8080 --name java-app  java-service-name

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/635832.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【字典树(前缀树) 位运算】1803. 统计异或值在范围内的数对有多少

本文涉及知识点 字典树(前缀树) 位运算 LeetCode1803. 统计异或值在范围内的数对有多少 给你一个整数数组 nums (下标 从 0 开始 计数)以及两个整数:low 和 high ,请返回 漂亮数对 的数目。 漂亮数对 是…

勒索病毒的策略与建议

随着网络技术的快速发展,勒索病毒攻击成为全球范围内日益严重的网络安全威胁。勒索病毒通过加密用户文件或锁定系统来勒索赎金,给个人和企业带来了巨大的损失。因此,了解如何应对勒索病毒攻击至关重要。本文将概述一些有效的防范措施和应对策…

【01】GeoScene Enterprise(Linux)许可更新

如果在Linux环境下部署了GeoScene Enterprise基础环境,也就是部署了server、portal、datastore、web adaptor四大组件,当试用许可到期后,拿到新的许可想要更新许可,从而使得软件能够正常工作,下述步骤是更新GeoScene E…

pytorch-20 lstm实践

一、LSTM预测类型 数据类型:单变量、多变量与面板数据数据处理(滑窗方式):单变量有seq2seq,seq2point;多变量:特征滑窗,带标签滑窗 1. 数据类型:单变量、多变量与面板数…

Windows安全应急--反隐身术

NO.1 dir命令 首先做个演示,把演示01这个文件夹隐藏起来, 在文件夹上是看不到了, 我们可以使用dir命令查看, NO.2 文件夹选项–显示隐藏 这个是非常常规的了, 这里不做过多介绍 有些隐藏文件很顽固,上面…

第一周:参照与变迁

这是我于2020年10月参加的一个为期10周的管理课程培训的作业集。当时要求每周都需提交一篇课后作业。现在打算重温并整理这些作业,以验证自己在这几年间是否真正有所长进。 事物一旦向相反方向发生改变,那么会相对程度的改变,并且会下意识的以…

【机器学习与大模型】驱动下的电子商务应用

摘要: 随着信息技术的飞速发展,电子商务已经成为当今商业领域中最为活跃和重要的部分之一。而机器学习和大模型的出现,为电子商务带来了新的机遇和挑战。本文深入探讨了机器学习与大模型在电子商务中的应用,包括个性化推荐、精准营…

MyBatisPlus标准分页功能制作,以及设置分页拦截器,selectPage(new Page<>(current,size),null)

目录 1、设置分页拦截器 2、创建数据库及表 3、pom.xml 4、添加MP的相关配置信息 application.yml 5、根据数据库表创建实体类 User 6、创建 UserDao 接口 7、编写引导类 8、编写测试类 9、Run的运行结果 1、设置分页拦截器 package com.example.config; import com.baomidou.m…

文章解读与仿真程序复现思路——电力系统保护与控制EI\CSCD\北大核心《基于改进Q学习算法和组合模型的超短期电力负荷预测》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

okcc呼叫系统如何限制主叫号码的使用频次?

OKCC呼叫中心系统是一套完整的呼叫中心与管理平台,为电话营销型企业专门设计的电销平台与客服平台。OKCC系统集电话营销功能与热线客服功能于一体,兼具呼入呼出功能。那么okcc呼叫系统如何限制主叫号码的使用频次呢?请和小编一起来看看,技术问题欢迎一起…

Java基础教程 - 9 集合

更好的阅读体验:点这里 ( www.doubibiji.com ) 更好的阅读体验:点这里 ( www.doubibiji.com ) 更好的阅读体验:点这里 ( www.doubibiji.com ) 9 集合 什么是集合&…

煤矿ai智能监控系统

煤矿ai智能监控系统利用智能视频分析技术和YOLO深度学习技术,煤矿ai智能监控系统可以对煤矿现场进行全方位的监测和分析。煤矿ai智能监控系统能够精确识别和分析皮带锚杆、矸石、木板、堆煤等运输设备和物料的运行状态,同时也可以识别煤量的大小以及非法…

Rocketmq集群再搭建

注意上面这个官方架构是 主从模式,还无法做到高可用,因为master节点宕机,从节点没法变成主节点,需要人工重启,够用了。 1. 先准备1台虚拟机,装好1台再克隆2台 根据上面的图,3台机器中有一台…

k8s之yaml文件详解

文章目录 k8s之yaml文件详解一、关于yaml文件1、k8s支持的文件格式2、YAML语言格式3、查看api资源版本标签4、编写nginx-test.yaml资源配置清单4.1 编写资源配置清单4.2 创建资源对象4.3 查看创建的pod资源 5、创建service服务对外提供访问并测试5.1 编写nginx-svc-test.yaml5.…

【有手就行】使用你自己的声音做语音合成,CPU都能跑,亲测有效

此文介绍在百度飞桨上一个公开的案例,亲测有效。 厌倦了前篇一律的TTS音色了吗?打开短视频听来听去就是那几个声音,快来试试使用你自己的声音来做语音合成吧!本教程非常简单,只需要你能够上传自己的音频数据就可以(建议…

08.CNN

文章目录 Observation 1Pooling - Max PoolingFlattenApplication:Playing Go使用验证集选择模型食物分类 Observation 1 Pooling - Max Pooling Pooling主要为了降低运算量,现在一般不用了,全convolution Flatten Application:P…

【Linux学习】进程基础API

下面是有关进程基础API的相关介绍,希望对你有所帮助! 小海编程心语录-CSDN博客 目录 1. 僵尸进程与孤儿进程 1.1 孤儿进程 1.2 僵尸进程 2. 监视子进程 2.1 wait() 2.2 waitpid() 3. 执行新程序 exec族函数 4. 守护进程 1. 僵尸进程与孤儿进程…

机器学习实验----逻辑回归实现二分类

目录 一、介绍 二、sigmoid函数 (1)公式: (2)sigmoid函数的输入 预测函数: 以下是sigmoid函数代码: 三、梯度上升 (1)似然函数 公式: 概念&#xff…

Golang | Leetcode Golang题解之第100题相同的树

题目: 题解: func isSameTree(p *TreeNode, q *TreeNode) bool {if p nil && q nil {return true}if p nil || q nil {return false}queue1, queue2 : []*TreeNode{p}, []*TreeNode{q}for len(queue1) > 0 && len(queue2) > …

10个顶级的论文降重指令,让你的论文降重至1.9%

10个顶级的论文降重指令,本硕博写论文必备! 在ChatGPT4o对话框中输入:写一个Spring BootVue实现的车位管理系统的论文大纲,并对其具体章节进行详细描述。 几小时即可完成一份1万字论文的编写 在GPTS中搜索论文降重,使…