当前位置: 首页 > news >正文

【从0开始配置前后端项目】——Docker环境配置

1. 准备一台纯净的服务器

镜像:CentOS 7.9 64位
CPU & 内存:2核2G
系统盘:60GB
峰值带宽:30Mbps
流量包:600GB / 600GB
在这里插入图片描述

2. 安装Docker

2.1 卸载旧的版本

$ sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

2.2 安装 Docker Engine-Community

在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker。

$ sudo yum install -y yum-utils  device-mapper-persistent-data  lvm2

使用以下命令来设置稳定的仓库。

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

安装 Docker Engine-Community

$ sudo yum install docker-ce docker-ce-cli containerd.io

启动 Docker

$ sudo systemctl start docker

通过运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community 。

$ sudo docker run hello-world

在这里插入图片描述
安装成功!

3. docker 部署一个flask项目

需求:基于docker创建在ubuntu18.04系统上运行Flask网站
流程:

  • 在centos7.9+安装docker
  • 基于docker
    • 获取基础镜像 ubuntu18.04
    • 基于基础镜像自定义镜像【ubuntu+python环境+代码】
    • 基于镜像创建容器+运行
  1. 获取镜像
 docker search ubuntu
 docker pull ubuntu:18.04
  1. 查看镜像
 docker images
  1. 构建自定义镜像
    在docker宿主机centos7.9创建2个文件:Dockerfile、app.py
#关Dockerfile
# Base images 基础镜像
FROM ubuntu:18.04#MAINTAINER 维护者信息
maintainer wzybmw888@163.com#RUN 执行以下命令
RUN apt update
RUN apt install python3 python3-pip -y
RUN pip3 install flask
RUN mkdir -p /data/www#拷贝文件至工作目录
COPY app.py /data/www/app.py#工作目录
WORKDIR /data/www/#EXPOSE映射端口
EXPOSE 80#容器启动时执行命令
CMD ["python3","app.py"]

app.py

from flask import Flaskapp = Flask(__name__)@app.route("/index")
def index():return "欢迎光临红浪漫"if __name__ =="__main__":app.run(host="0.0.0.0",port=8000)

命令构建自定义镜像(模板)

docker build -t wupeiqi/web1:1.0 .  -f Dockerfile

基于镜像创建容器+运行

docker run -p 80:8000 -d --name v123 wupeiqi/web1:1.0

-p 表示外部端口80访问内部端口8000, -d表示后台运行

  1. 补充
docker ps -a 列出所有创建的容器
docker ps 列出所有运行的容器
docker stop xx1 xx2 停止正在运行的容器,xx1可以是容器id也可以是name
docker rm xx1 xx2 删除容器
  1. Dockerfile指令
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    删除停止运行的容器
 docker rm $(docker ps -qa)

4. Docker运行mysql服务

原始视频链接 https://www.bilibili.com/video/BV1wQ4y1Y7SE?p=16&spm_id_from=pageDriver&vd_source=7ac19d5113271a9a076e045912769b5e

下载mysql8.x

docker pull mysql:8.0.22

1启动mysql 开放端口映射(3306),使用-e设置root用户密码,后台运行-d,指定名称–name,总是运行

docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d --name mysql01 --restart=always mysql:8.0.22 

新开一个窗口
在这里插入图片描述

  1. 持久化宿主机
    -v /root/data:/var/lib/mysql
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d --name mysql01 --restart=always -v /root/data:/var/lib/mysql  mysql:8.0.22 

5. Docker运行redis服务

docker pull redis:5.0.12
docker run -p 6379:6379 -d redis:5.0.12
docker exec -it 70e bash

启动redis 映射端口(6379) 后台启动-d 指定名称–name 总是启动 --restart=always

docker run -p 6379:6379 -d --name redis01 --restart=always redis:5.0.12

redis支持内存数据持久化:
1.rdb持久化: 快照 Redis服务器将某一时刻数据以快照文件形式写入到磁盘
2.aof持久化: redis服务器将所有redis客户端的写操作以命今方式记录到日志文件中 AOF更加安全 everysec
3.docker 启动redis 映射端口(6379) 后台启动-d 指定名–ame 总是启动 --restart=alnays 运行redis如何开启持久化
注意: 只要开启了持久化,将持久化文件生成容器中/data/目录中

docker run --name redis01 -d -p 6379:6379 --restart=always redis:5.0.12 redis-server --appendonly yes

4.docker启动redis 开放口 后台启动 指定名 总是启动 开启持化 映射数据文件外部

docker run --name redis01 -d -p 6379:6379 --restart=always -v /root/redisdata:/data redis:5.0.12  redis-server --appendonly yes

6. Docker 配置Nginx服务

https://www.jianshu.com/p/f2c6ad35fbb0

7. Docker Compose

在这里插入图片描述
在这里插入图片描述

sudo curl -L https://github.com/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m`  >  /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-compose
#启动项目
docker-compose 
【-f  docker-compose.yml的路径】
【-d 】(后台启动)up#关闭用docker-compose启动的所有容器
docker-compose 
【-f  docker-compose.yml的路径】
down 

docker-compose文件模板

#docker-compose的版本
version: "3.8"
#一组容器
services:#容器(自定义),默认生成的容器名为:项目名(docker-compose.yml所在目录的目录名)_容器_序号。container1:#镜像image: image1#通过Dockerfile构建镜像然后运行build: /dir/of/Dockerfile#容器名container_name: container-name #端口映射(可多个) 宿主主机端口:容器端口 ports:- 80:80#数据卷(可多个) 宿主主机文件(必须已存在):容器文件volumes:- /path/in/host:/path/in/container#环境变量(可多个)environment:- var=value#覆盖容器启动时执行的命令command: new-command#先启动这些,再启动本身.depends_on:- 服务1

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

相关文章:

【从0开始配置前后端项目】——Docker环境配置

1. 准备一台纯净的服务器 镜像:CentOS 7.9 64位 CPU & 内存:2核2G 系统盘:60GB 峰值带宽:30Mbps 流量包:600GB / 600GB 2. 安装Docker 2.1 卸载旧的版本 $ sudo yum remove docker \docker-client \docker-cl…...

R语言 一种功能强大的数据分析、统计建模 可视化 免费、开源且跨平台 的编程语言

R语言是一种广泛应用于数据分析、统计建模和可视化的编程语言。它由新西兰奥克兰大学的罗斯伊哈卡和罗伯特杰特曼开发,并于1993年首次发布。R语言是一个免费、开源且跨平台的语言,它在统计学和数据科学领域得到了广泛的应用。 R语言具有丰富的数据处理、…...

springmvc-JSR303进行服务端校验分组验证SpringMVC定义Restfull接口异常处理流程RestController异常处理

目录& 1. JSR303 2. JSR303中含有的注解 3. spring中使用JSR303进行服务端校验 3.1 导入依赖包 3.2 添加验证规则 3.3 执行校验 4. 分组验证 4.1 定义分组验证规则 4.2 验证时通过参数指定验证规则 4.3 验证信息的显示 5. SpringMVC定义Restfull接口 5.1 增加s…...

证件照换底色详细教程

说到证件照的底色更改,我想对大部分朋友来说是蛮头疼的事情,由于我们不论是在生活还是学习中,有时候总会要上传一些证件照,而当你手上有证件照准备上传时,发现底色不对,是不是很抓狂,现在&#…...

【ringbuff share mem】

ringbuff 和share mem 结合实现PV操作 参考链接 https://juejin.cn/post/7113550346835722276 https://zhuanlan.zhihu.com/p/147826545 代码如下: #include "rb.h"int g_shmid 0;shm_buff * create_shm(int *smid) {int id;shm_buff *share_mem NU…...

【Zookeeper专题】Zookeeper经典应用场景实战(一)

目录 前置知识课程内容一、Zookeeper Java客户端实战1.1 Zookeeper 原生Java客户端使用1.2 Curator开源客户端使用快速开始使用示例 二、Zookeeper在分布式命名服务中的实战2.1 分布式API目录2.2 分布式节点的命名2.3 分布式的ID生成器 三、zookeeper实现分布式队列3.1 设计思路…...

【数据库——MySQL】(15)存储过程、存储函数和事务处理习题及讲解

目录 1. 题目1.1 存储过程1.2 存储函数1.3 事务处理 2. 解答2.1 存储过程2.2 存储函数2.3 事务处理 1. 题目 1.1 存储过程 创建表 RandNumber :字段:id 自增长, data int; 创建存储过程向表中插入指定个数的随机数(1-…...

FFmpeg:打印音/视频信息(Meta信息)

多媒体文件基本概念 多媒体文件其实是个容器在容器里面有很多流(Stream/Track)每种流是由不同的编码器编码的从流中读出的数据称为包在一个包中包含着一个或多个帧 几个重要的结构体 AVFormatContextAVStreamAVPacket FFmpeg操作流数据的基本步骤 打印音/视频信息(Meta信息…...

1.Linux入门基本指令

个人主页:Lei宝啊 愿所有美好如期而遇 目录 01.ls指令 02.pwd指令 03.cd指令 04.touch指令 05.mkdir指令(重要) 06.rmdir&&rm指令(重要) 07.man指令(重要) 08.cp指令(重要) 09.mv指令(重要) 10.cat指令 nano指令 echo指令 输出重定向 追加重…...

2023腾讯云服务器优惠代金券领取、查询及使用说明

腾讯云代金券领取渠道有哪些?腾讯云官网可以领取、官方媒体账号可以领取代金券、完成任务可以领取代金券,大家也可以在腾讯云百科蹲守代金券,因为腾讯云代金券领取渠道比较分散,腾讯云百科txybk.com专注汇总优惠代金券领取页面&am…...

大华智慧园区管理平台任意密码读取漏洞 复现

文章目录 大华智慧园区管理平台任意密码读取漏洞 复现0x01 前言0x02 漏洞描述0x03 影响平台0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 大华智慧园区管理平台任意密码读取漏洞 复现 0x01 前言 免责声明:请勿利用文章内的相关技术从事非法测试&…...

【C++ 学习 ㉖】- 位图详解(哈希扩展)

目录 一、位图的概念 二、位图的实现 2.1 - bitset.h 2.2 - test.cpp 三、位图的应用 3.1 - 例题一 3.2 - 例题二 一、位图的概念 假设有这样一个需求:在 100 亿个整型数字中快速查询某个数是否存在其中,并假设是 32 位操作系统,4 GB…...

天启科技联创郭志强:趟遍教育行业信数化沟坎,创业智能赛道重塑行业生态

郭志强 天启科技联合创始人 近20年互联网、企业信息化、数字化实施、管理及培训经验。对于集团型企业及初创企业、传统企业及互联网企业的信息化、数字化转型有自己独到的见解和实操经验。具备跨区域、集团化信息规划、解决方案、系统架构及企业流程搭建、优化和技术团队管理能…...

Cuckoo沙箱各Ubuntu版本安装及使用

1.沙箱简介 1.1 沙箱 沙箱是一个虚拟系统程序,允许你在沙箱环境中运行浏览器或其他程序,因此运行所产生的变化可以随后删除。它创造了一个类似沙盒的独立作业环境,在其内部运行的程序并不能对硬盘产生永久性的影响。 在网络安全中&#xff…...

什么是mvvm模式,优点是什么

MVVM(Model-View-ViewModel)模式是一种设计模式。它是一种开发模式,旨在分离用户界面的开发和业务逻辑的开发。MVVM模式将应用程序分为三个部分: Model:它代表应用程序的数据模型和业务逻辑。 View:它代表…...

C/C++ 中的函数返回局部变量以及局部变量的地址?

C/C中,函数内部的一切变量(函数内部局部变量,形参)都是在其被调用时才被分配内存单元。形参和函数内部的局部变量的生命期和作用域都是在函数内部(static变量的生命期除外)。子函数运行结束时,所有局部变量的内存单元会被系统释放。在C中&…...

springboot和vue:七、mybatis/mybatisplus多表查询+分页查询

mybatisplus实际上只对单表查询做了增强(速度会更快),从传统的手写sql语句,自己做映射,变为封装好的QueryWrapper。 本篇文章的内容是有两张表,分别是用户表和订单表,在不直接在数据库做表连接的…...

【Leetcode】 51. N 皇后

按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。 每一种…...

Java数据库连接:JDBC介绍与简单示例

Java数据库连接:JDBC介绍与简单示例 在Java程序中,操作数据库是必不可少的。JDBC(Java Database Connectivity)是Java中用于连接和操作数据库的一种技术。通过JDBC,Java程序可以与各种关系型数据库进行交互&#xff0…...

智慧茶园:茶厂茶园监管可视化视频管理系统解决方案

一、方案背景 我国是茶叶生产大国,茶叶销量全世界第一。随着经济社会的发展和人民生活水平的提高,对健康、天然的茶叶产品的消费需求量也在逐步提高。茶叶的种植、生产和制作过程工序复杂,伴随着人力成本的上升,传统茶厂的运营及…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链(Filter Chain),核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤: 用户提交登录请求拦…...

微服务通信安全:深入解析mTLS的原理与实践

🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、引言:微服务时代的通信安全挑战 随着云原生和微服务架构的普及,服务间的通信安全成为系统设计的核心议题。传统的单体架构中&…...