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

news2024/9/23 3:26:00

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

考研数学|线代跟谁好,李永乐,汤家凤还是张宇?

如果线代基础不好,那建议开刚开始的时候听汤家凤老师的线代课程 汤家凤教授的线性代数课程常被忽视,多数人倾向于去听李永乐。然而,在我考研的过程中,我曾尝试听李永乐教老师的课,可能是由于我自身基础薄弱&#xff0…

基于Vue的前端自定义询问弹框与输入弹框组件的设计与实践

基于Vue的前端自定义询问弹框与输入弹框组件的设计与实践 摘要 随着技术的不断进步,前端开发面临越来越多的挑战,其中之一就是如何有效管理复杂的业务逻辑和用户体验。传统的整块应用开发方式在面对频繁的功能变更和用户体验优化时,往往显得…

各大模型厂商API使用:百度、阿里、豆包、kimi、deepseek

百度ERNIE(支持requests接口) ERNIE Speed、ERNIE Lite免费 免费测试下来模型ernie_speed输出吞吐量计算20-30来个,“{length/cost} tokens/s” 输出总长度/耗时 https://qianfan.cloud.baidu.com/ 文档: https://cloud.baidu.com/doc/WENXINWORKSHOP/s/dltgsna1o a…

数据结构——链式二叉树知识点以及链式二叉树数据操作函数详解!!

引言:该博客将会详细的讲解二叉树的三种遍历方法:前序、中序、后序,也同时会讲到关于二叉树的数据操作函数。值得一提的是,这些函数几乎都是建立在一个函数思想——递归之上的。这次的代码其实写起来十分简单,用不了几…

【C++】二分查找:在排序数组中查找元素的第一个和最后一个位置

1.题目 难点&#xff1a;要求时间复杂度度为O(logn)。 2.算法思路 需要找到左边界和右边界就可以解决问题。 题目中的数组具有“二段性”&#xff0c;所以可以通过二分查找的思想进行解题。 代码&#xff1a; class Solution { public:vector<int> searchRange(vect…

【传知代码】无监督动画中关节动画的运动表示-论文复现

文章目录 概述动画技术的演进原理介绍核心逻辑环境配置/部署方式小结 本文涉及的源码可从无监督动画中关节动画的运动表示该文章下方附件获取 概述 该文探讨了动画在教育和娱乐中的作用&#xff0c;以及通过数据驱动方法简化动画制作的尝试。近期研究通过无监督运动转移减少对…

【数据结构与算法 经典例题】判断链表是否带环

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;数据结构与算法刷题系列&#xff08;C语言&#xff09; 期待您的关注 目录

数据结构和算法|排序算法系列(三)|插入排序(三路排序函数std::sort)

首先需要你对排序算法的评价维度和一个理想排序算法应该是什么样的有一个基本的认知&#xff1a; 《Hello算法之排序算法》 主要内容来自&#xff1a;Hello算法11.4 插入排序 插入排序的整个过程与手动整理一副牌非常相似。 我们在未排序区间选择一个基准元素&#xff0c;将…

社交媒体数据恢复:聊天宝

请注意&#xff0c;本教程仅针对聊天宝应用程序&#xff0c;而非其他聊天软件。以下是详细的步骤&#xff1a; 首先&#xff0c;请确保您已经登录了聊天宝应用程序。如果您尚未登录&#xff0c;请使用您的账号登录。 在聊天宝主界面&#xff0c;找到您希望恢复聊天记录的对话框…

深度学习复盘与小实现

文章目录 一、查漏补缺复盘1、python中zip()用法2、Tensor和tensor的区别3、计算图中的迭代取数4、nn.Modlue及nn.Linear 源码理解5、知识杂项思考列表6、KL散度初步理解 二、处理多维特征的输入1、逻辑回归模型流程2、Mini-Batch (N samples) 三、加载数据集1、Python 魔法方法…

YOLOv8_pose预测流程-原理解析[关键点检测理论篇]

YOLOv8_seg的网络结构图在博客YOLOv8网络结构介绍_CSDN博客已经更新了,由网络结构图可以看到相对于目标检测网络,实例分割网络只是在Head层不相同,如下图所示,在每个特征层中增加了KeyPoint分支(浅绿色),通过两个卷积组和一个Conv卷积得到得到通道数为51的特征图,51表示…

python内置函数map/filter/reduce详解

在Python中&#xff0c;map(), filter(), 和 reduce() 是内置的高级函数(实际是class)&#xff0c;用于处理可迭代对象&#xff08;如列表、元组等&#xff09;的元素。这些函数通常与lambda函数一起使用&#xff0c;以简洁地表达常见的操作。下面我将分别解释这三个函数。 1. …

【C++课程学习】:命名空间的理解(图文详解)

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;C课程学习 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 &#x1f4f7;1.命名冲突 &#x1f4f7;2.重定义 &#x1f4f7;3.命名空间 &#x1f37a;命名空间可…

山东大学软件学院数据库实验1-9(全部)

目录 前言 实验代码 实验一 1-1 1-2 1-3 1-4 1-5 1-6 实验二 2-1 2-2 2-3 2-4 2-5 2-6 2-7 2-8 2-9 2-10 实验三 3-1 3-2 3-3 3-4 3-5 3-6 3-7 3-8 3-9 3-10 实验四 4-1 4-2 4-3 4-4 4-5 4-6 4-7 4-8 4-9 4-10 实验五 5-1…

CSRF跨站请求伪造实战

目录 一、定义 二、与XSS的区别 三、攻击要点 四、实战 一、定义 CSRF (Cross-site request forgery&#xff0c;跨站请求伪造)&#xff0c;攻击者利用服务器对用户的信任&#xff0c;从而欺骗受害者去服务器上执行受害者不知情的请求。在CSRF的攻击场景中&#xff0c;攻击…

移动云以深度融合之服务,令“大”智慧贯穿云端

移动云助力大模型&#xff0c;开拓创新领未来。 云计算——AI模型的推动器。 当前人工智能技术发展的现状和趋势&#xff0c;以及中国在人工智能领域的发展策略和成就。确实&#xff0c;以 ChatGPT 为代表的大型语言模型在自然语言处理、文本生成、对话系统等领域取得了显著的…

等价关系、偏序关系与哈斯图

一、等价关系的定义 设R是集合A上的一个二元关系&#xff0c;如果R满足自反性、对称性和传递性&#xff0c;则称R是一个等价关系。 二、等价类和商集 哪些元素有关系&#xff0c;就构成一个等价类。 所有等价类构成的集合就是商集。 集合的划分&#xff1a;就是对集合中的元…

Liunx系统中修改文件的创建时间以及访问时间

在Linux系统中&#xff0c;可以使用touch命令来修改文件的时间戳。以下是一些常用的touch命令选项&#xff1a; &#xff08;其实在MacOS中也适用&#xff09; 修改访问时间&#xff08;Access Time&#xff09;和修改时间&#xff08;Modification Time&#xff09;&#xf…

【代码随想录】动态规划经典题

前言 更详细的在大佬的代码随想录 (programmercarl.com) 本系列仅是简洁版笔记&#xff0c;为了之后方便观看 做题步骤 含义公式初始化顺序检查 确定dp数组以及下标的含义递推公式dp数组如何初始化遍历顺序打印dp数组&#xff08;看哪里有问题&#xff09; 斐波那契数 c…

百亿级流量红包系统,如何做架构?(字节面试真题)

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格&#xff0c;遇到很多很重要的架构类/设计类的场景题&#xff1a; 1.如何设计高并发红包系统 &#xff0…