当前位置: 首页 > 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

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

在这里插入图片描述

http://www.lryc.cn/news/185989.html

相关文章:

  • R语言 一种功能强大的数据分析、统计建模 可视化 免费、开源且跨平台 的编程语言
  • springmvc-JSR303进行服务端校验分组验证SpringMVC定义Restfull接口异常处理流程RestController异常处理
  • 证件照换底色详细教程
  • 【ringbuff share mem】
  • 【Zookeeper专题】Zookeeper经典应用场景实战(一)
  • 【数据库——MySQL】(15)存储过程、存储函数和事务处理习题及讲解
  • FFmpeg:打印音/视频信息(Meta信息)
  • 1.Linux入门基本指令
  • 2023腾讯云服务器优惠代金券领取、查询及使用说明
  • 大华智慧园区管理平台任意密码读取漏洞 复现
  • 【C++ 学习 ㉖】- 位图详解(哈希扩展)
  • 天启科技联创郭志强:趟遍教育行业信数化沟坎,创业智能赛道重塑行业生态
  • Cuckoo沙箱各Ubuntu版本安装及使用
  • 什么是mvvm模式,优点是什么
  • C/C++ 中的函数返回局部变量以及局部变量的地址?
  • springboot和vue:七、mybatis/mybatisplus多表查询+分页查询
  • 【Leetcode】 51. N 皇后
  • Java数据库连接:JDBC介绍与简单示例
  • 智慧茶园:茶厂茶园监管可视化视频管理系统解决方案
  • springboot整合pi支付开发
  • 类 ChatGPT 模型存在的局限性
  • Nginx的安全控制
  • 字符串与字符编码 - GO语言从入门到实战
  • 12P4375X042-233C KJ2005X1-BA1 CE3007 EMERSON servo controller
  • WPF向Avalonia迁移(四、其他事项)
  • Python 代码调试
  • DM宣传单制作,利用在线模板,快速替换文字
  • 【力扣】42. 接雨水
  • IPETRONIK数据采集设备携手Softing Q-Vision软件致力于ADAS测试方案
  • Go语言中的指针介绍