容器化部署之dockercompose08

Docker Compose与Rancher详解

一、容器编排工具dockercompose

日常工作中,常常1个项目会依赖多个容器工作,比如web后端nginx前端,数据库等。我们可以通过一个单独的配置文件来定义一组关联容器的启动过程,一个命令就可以把相关的容器正确启动起来。
这个作用类似dockerfile,不过一个是定义镜像,一个是定义一组容器的启动过程。

核心文件:docker-compose.yml
使用YAML格式定义一组容器为一个项目,通过docker-compose命令实现一键管理容器组合。

安装:

pip3 install docker-compose -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
pip3 uninstall docker-compose
docker-compose version

docker-compose.yml编写

version: "3"  # compose版本1,2,3 必须用数字表示
services:  # 一组服务
  # 定义一组服务 定义相关容器启动的参数
  frontend:  # 服务的名称可以自定义
    image:
      nginx:latest  # 指定容器启动所需镜像
    container_name: nginxdemo  # 指定容器名称
    ports:
      - 80:80  # 端口映射冒号后不需要加空格
    volumes:
      - /root/conf:/etc/nginx
      - /root/html:/usr/share/nginx/html
    networks:
      autotpnet:
        aliases: # 容器别名
          - nginxdemo

  backend:
    build:  # 构建镜像
      context: .  # 表示镜像的上下文 相当于docker built [选项] <上下文路径/URL/->
      dockerfile: Dockerfile  # dockerfile相对应compose文件路径
    container_name: autotpenv
    ports:
      - 8081:8081
    networks:
      autotpnet:
        aliases:
          - autotpenv

  db:
    image:
      mysql:8.0
    container_name: db_mysql
    ports:
      - 3307:3306
    environment:
      MYSQL_ROOT_PASSWORD: devops
      MYSQL_DATABASE: autotpsite
    volumes:
      - /root/mysql/data:/var/lib/mysql
      - /root/mysql/conf:/etc/mysql
      - /root/mysql/mysql-files:/var/lib/mysql-files
    networks:
      autotpnet:
        aliases:
          - db_mysql

networks:
  autotpnet:
    driver: bridge

启动:docker-compose up -d
关闭并删除容器:docker-compose down
重新创建镜像启动容器:docker-compose up -d --build

几个部署注意事项:
1)解决跨域问题
Django配置corsheaders

nginx添加配置

location / {
   proxy_pass http://autotpenv:8081;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_set_header Host $host;
   proxy_redirect off;
}

2)使用mysql8以上,mysql容器编排需数据卷添加映射

/root/mysql/mysql-files:/var/lib/mysql-files

3)添加数据库容器前操作数据库配置文件和数据

docker cp vigorous_allen:/etc/mysql mysql/conf
docker cp vigorous_allen:/var/lib/mysql mysql/data

进入python容器执行创建表结构:

python3 manage.py migrate

外部导入sql文件:

docker cp autotpsite.sql db_mysql:/opt

进入容器执行sql文件:source /opt/autotpsite.sql

二、Rancher容器管理平台

Rancher是一个开源的企业级容器管理平台(1.6),常用功能有容器的编排、调度、健康检查等。
2.x需要安装k8s,并且与1.x不兼容。

搭建rancher:

"""
# 启动server
docker run -d --restart=unless-stopped -p 8080:8080 rancher/server:stable

# 添加主机(基础架构-主机)
docker run --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.11 http://8.130.12.186:8080/v1/scripts/D7D3CA3A422F5B65833D:1703980800000:9xkHvny5p9isg1mXR8d5a3nls

# 添加容器
上传docker-compose.yml文件,rancher1.6版本只支持docker-compose2,修改yml中version:"2"
修改nginx配置文件中域名为容器名称,界面重启容器,出现容器不断重启的情况
docker ps 查看容器,发现容器名称是后缀随机生成的,且添加到了none网络中
解决:
docker-compose.yml文件添加容器网络和容器别名(图片),手动输入命令docker-compose up -d重启容器
rancher添加容器还是不生效,因为DNS解析通过服务名称来解析的,比如backend
修改nginx配置文件中域名为服务名称,比如backend

rancher部署应用,可以部署在多个主机上,大规模集群部署
"""

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

妍婧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值