【从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 [email protected]

#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 Flask

app = 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-compose

sudo 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

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

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_58598240/article/details/133577974
今日推荐