【从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

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

在这里插入图片描述

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

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

相关文章

【ONE·Linux || 多线程(二)】

总言 多线程:生产者消费者模型与两种实现方式(条件变量、信号量)、线程池。 文章目录 总言4、生产者消费者模型4.1、基本概念4.2、基于BlockingQueue的生产者消费者模型(理解条件变量)4.2.1、单生产者单消费者模式&am…

【juc】countdownlatch实现游戏进度

目录 一、截图示例二、代码示例 一、截图示例 二、代码示例 package com.learning.countdownlatch;import java.util.Arrays; import java.util.Random; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurr…

爱普生LQ1900KIIH复位方法

爱普生EPSON 1900KIIH是一部通用针式打印机,136列(10cpi下)的打印宽度,缓冲区128KB,打印速度为270字/秒。 打印机类型 打印方式:24针击打式点阵打印、打印方向:双向逻辑查找、安全规格标准&am…

Dubbo-CVE-2020-1948

APache Dubbo简介 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式…

人体姿态标注

人体姿态标注 一 标注工具labelme1.1 安装方式1.2 界面说明 二 数据集准备以下每张图片的命名方式:状态_学号_序号.jpg (注意 一定是jpg格式) 保存到一个文件夹中,便于标注。 例如:FALL_0000_0001.jpg 站立数据(UP):不同方向&…

MySQL增删查改(进阶1)

一、数据库约束 约束:按照一定条件进行规范的做事; 表定义的时候,某些字段保存的数据需要按照一定的约束条件; 1.null约束 字段null:该字段可以为空;not null:该字段不能为空不指定的话就是…

优优嗨聚集团:OTC药品能否纳入报销成为各方关注焦点,对OTC医疗有何影响

随着医疗费用的不断上涨,各方对于非处方药(OTC)能否纳入报销的关注度也在不断提升。OTC药品是指无需医生处方即可购买的药品,具有方便快捷、安全有效的特点。然而,对于是否将OTC药品纳入报销范围,各方看法不…

NewStarCTF 2023 WEEK1|PWN ret2text

拖进IDA,查看 int __cdecl main(int argc, const char **argv, const char **envp) {char buf[32]; // [rsp0h] [rbp-20h] BYREFinit();puts("Welcome to NewStar CTF!!");puts("Show me your magic");read(0, buf, 0x100uLL);return 0; } ma…

Java版本+企业电子招投标系统源代码之电子招投标系统建设的重点和未来趋势

一、立项管理 1、招标立项申请 功能点:招标类项目立项申请入口,用户可以保存为草稿,提交。 2、非招标立项申请 功能点:非招标立项申请入口、用户可以保存为草稿、提交。 3、采购立项列表 功能点:对草稿进行编辑&#x…

46 二叉树展开为链表

二叉树展开为链表 理解题意:前序遍历的N种写法题解1 前序遍历题解2 反前序遍历(代码简洁)题解3 类似旋转的方法题解4 迭代题解5 同时遍历改左右子树 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNo…

Day-05 CentOS7.5 安装 Docker

参考 : Install Docker Engine on CentOS | Docker DocsLearn how to install Docker Engine on CentOS. These instructions cover the different installation methods, how to uninstall, and next steps.https://docs.docker.com/engine/install/centos/ Doc…

让照片人物开口说话,SadTalker 安装及使用(避坑指南)

AI技术突飞猛进,不断的改变着人们的工作和生活。数字人直播作为新兴形式,必将成为未来趋势,具有巨大的、广阔的、惊人的市场前景。它将不断融合创新技术和跨界合作,提供更具个性化和多样化的互动体验,成为未来的一种趋…

[C++基础]-多态

前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正。 本期学习目标&am…

数据库配置mysql5.7

1 创建数据库 """ 1.管理员连接数据库 mysql -uroot -proot2.创建数据库 create database hello default charsetutf8;3.查看用户 select user,host,password from mysql.user;# 5.7往后的版本 select user,host,authentication_string from mysql.user; "…

力扣-345.反转字符串中的元音字母

Idea 将s中的元音字母存在字符串sv中,并且使用一个数组依次存储元音字母的下标。 然后将字符串sv进行反转,并遍历元音下标数组,将反转后的字符串sv依次插入到源字符串s中 AC Code class Solution { public:string reverseVowels(string s) {…

【进阶C语言】数组笔试题解析

本节内容以刷题为主,大致目录: 1.一维数组 2.字符数组 3.二维数组 学完后,你将对数组有了更全面的认识 在刷关于数组的题目前,我们先认识一下数组名: 数组名的意义:表示数组首元素的地址 但是有两个例外…

强化学习环境 - robogym - 学习 - 3

强化学习环境 - robogym - 学习 - 3 文章目录 强化学习环境 - robogym - 学习 - 3项目地址为什么选择 robogymObservation - 观测信息Action - 动作信息Initialization - 初始状态设置 项目地址 https://github.com/openai/robogym 为什么选择 robogym 自己的项目需要做一些机…

微信小程序使用路由传参和传对象的方法

近期在做微信小程序开发,在页面跳转时,需要携带参数到下一个页面,尤其是将对象传入页面。为了方便重温,特此记录。 路由传字符串参数 原始页面 传递字符串参数比较简单。路由跳转有两种方式,一种是通过navigator组件…

企业AI工程化之路:如何实现高效、低成本、高质量的落地?

MLOps工程实践 概述面临挑战目的内容简介读者对象专家推荐目录 写在末尾: 主页传送门:📀 传送 概述 作为计算机科学的一个重要领域,机器学习也是目前人工智能领域非常活跃的分支之一。机器学习通过分析海量数据、总结规律&#x…

Flask实现注册登录模块

🙌秋名山码民的主页 😂oi退役选手,Java、大数据、单片机、IoT均有所涉猎,热爱技术,技术无罪 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 获取源码,添加WX 目录 前言1.…