0
点赞
收藏
分享

微信扫一扫

1.06 docker Compose多容器部署

水沐由之 2022-02-04 阅读 64


1.docker部署wordpress


  • 将dockerHub上的wordpress和mysql拉取到本地
    1.06  docker Compose多容器部署_docker
    1.06  docker Compose多容器部署_docker_02
  • 创建mysql的container,端口不需要映射,数据库是wordpress去访问
    1.06  docker Compose多容器部署_redis_03
  • 创建wordpress的container,映射到本地的8080端口
    1.06  docker Compose多容器部署_redis_04
  • 访问IP:8080,可以看到wordpress的欢迎页
    1.06  docker Compose多容器部署_mysql_05
  • 选中文,继续
    1.06  docker Compose多容器部署_redis_06
  • 填写信息,点击安装
    1.06  docker Compose多容器部署_docker_07
  • 点登录,通过两个image成功部署了wordpress
    1.06  docker Compose多容器部署_mysql_08
    1.06  docker Compose多容器部署_mysql_09

2.docker compose介绍


  • 多容器的APP很难部署和管理
  • docker compose就类似于批处理
    1.06  docker Compose多容器部署_mysql_10
  • docker compose是一个命令行工具,可以通过一个yml格式的文件定义多容器的docker应用
  • 通过一条命令就可以根据yml文件的定义去创建或者管理多个容器
  • docer compose版本2只能用于单机,版本3可以用于多机
  • docker-compose.yml是默认的名字,文件中有如下三种重要的概念
    1.06  docker Compose多容器部署_redis_11
  • Services:一个service代表一个container,这个container可以由dokerHub的image创建,也可以由本地的Dockerfile build出来的image创建
  • Services的启动类似于docker run,可以给其指定network和volume,所以可以给service指定network和volume的引用

3.docker compose安装和使用


  • 下载docker compose
    1.06  docker Compose多容器部署_redis_12
  • 赋权限
    1.06  docker Compose多容器部署_docker_13
  • 查看版本,显示就安装好了
    1.06  docker Compose多容器部署_mysql_14
  • 在某个目录创建docker-compose.yml文件,这里在/home下创建,写入内容
    1.06  docker Compose多容器部署_docker_15

version: '3'

services:

wordpress:
image: wordpress
ports:
- 8080:80
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_PASSWORD: admin
networks:
- my-bridge

mysql:
image: mysql:5.5
environment:
MYSQL_ROOT_PASSWORD: admin
MYSQL_DATABASE: wordpress
volumes:
- mysql-data:/var/lib/mysql
networks:
- my-bridge

volumes:
mysql-data:

networks:
my-bridge:
driver: bridge

  • 启动docker-compose
    1.06  docker Compose多容器部署_redis_16
  • 另一个窗口查看容器网络状态
    1.06  docker Compose多容器部署_redis_17
    1.06  docker Compose多容器部署_docker_18
  • 在另一个会话,查看当前docker进程
    1.06  docker Compose多容器部署_redis_19
  • 查看docker-compose
    1.06  docker Compose多容器部署_mysql_20
  • 停止docker-compose
    1.06  docker Compose多容器部署_mysql_21
  • 启动docker-compose
    1.06  docker Compose多容器部署_docker_22
  • 停止并删除docker-compose
    1.06  docker Compose多容器部署_redis_23
  • 后台运行docker-compose
    1.06  docker Compose多容器部署_mysql_24
  • 交互运行docker-compose的方法
    1.06  docker Compose多容器部署_mysql_25
  • 找到之前写的flask-redis,进入目录
    1.06  docker Compose多容器部署_mysql_26
  • 创建docker-compose.yml,写入如下内容

version: "3"

services:

redis:
image: redis

web:
build:
context: .
dockerfile: Dockerfile
ports:
- 8080:5000
environment:
REDIS_HOST: redis

  • 启动docker-compose
    1.06  docker Compose多容器部署_docker_27
  • 启动后,浏览器访问IP:8080,可以看到如下
    1.06  docker Compose多容器部署_redis_28
  • 停止并删除
    1.06  docker Compose多容器部署_docker_29
    4.容器扩展和负载均衡
  • 启动并后台运行compose
    1.06  docker Compose多容器部署_docker_30
  • 查看进程,此时有一个redis和一个web
    1.06  docker Compose多容器部署_docker_31
  • 扩展web的应用部署
  • 但是运行完会报错,8080端口占用
    1.06  docker Compose多容器部署_mysql_32
    1.06  docker Compose多容器部署_docker_33
  • 停止并删除compose
    1.06  docker Compose多容器部署_docker_34
  • 删除docker-compose.yml中的如下两行
    1.06  docker Compose多容器部署_redis_35
  • 启动并创建3个web服务
  • 运行中也可以扩展,实现了高效快速扩展
    1.06  docker Compose多容器部署_docker_36
  • 查看进程
    1.06  docker Compose多容器部署_redis_37
  • 假如有多个web,同时访问一个redis,还需要一个负载均衡器
    1.06  docker Compose多容器部署_redis_38
  • 修改之前的app.py如下
    1.06  docker Compose多容器部署_docker_39
  • 修改之前的Dockerfile如下
    1.06  docker Compose多容器部署_redis_40
  • 修改之前的docker-compose.yml如下,最后加一段haproxy
    1.06  docker Compose多容器部署_redis_41
  • 停止并删除compose
    1.06  docker Compose多容器部署_redis_42
  • 运行compose
    1.06  docker Compose多容器部署_docker_43
  • 尝试访问
    1.06  docker Compose多容器部署_mysql_44
  • 动态将web扩展成3个
    1.06  docker Compose多容器部署_mysql_45
  • 查看进程
    1.06  docker Compose多容器部署_mysql_46
  • 尝试访问
    1.06  docker Compose多容器部署_docker_47
  • 当访问高峰过去,还可以减少集群节点
    1.06  docker Compose多容器部署_docker_48
  • 查看进程
    1.06  docker Compose多容器部署_docker_49
  • 停止并删除compose
    1.06  docker Compose多容器部署_redis_50

5.复杂应用部署


  • 有两个对外的App,votingApp是对外投票用的,resultsApp会实时显示候选人得票情况
  • votingApp访问量大,先把投票结果写到redis缓存,java去取结果写到数据库
  • resultsApp从数据库获取最新的投票结果
    1.06  docker Compose多容器部署_docker_51
  • 进入目录
    1.06  docker Compose多容器部署_mysql_52
  • 启动docker-compose
    1.06  docker Compose多容器部署_redis_53
  • 浏览器访问5000和5001端口
    1.06  docker Compose多容器部署_docker_54
    1.06  docker Compose多容器部署_docker_55
  • 关闭并删除
    -1.06  docker Compose多容器部署_mysql_56

1.06  docker Compose多容器部署_redis_57



举报

相关推荐

0 条评论