前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >测试开发进阶(四十五)

测试开发进阶(四十五)

作者头像
zx钟
发布2019-12-11 17:53:06
6140
发布2019-12-11 17:53:06
举报
文章被收录于专栏:测试游记测试游记

Docker Compose

安装

代码语言:javascript
复制
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

$ sudo chmod +x /usr/local/bin/docker-compose

$ docker-compose --version

删除无用的网络

代码语言:javascript
复制
$ docker network prune

删除无用的数据卷

代码语言:javascript
复制
$ docker volume prune

编写docker-compose.yml

代码语言:javascript
复制
# 指定版本信息
version: '3'

# 指定服务(启动容器)
services: 
    # 服务名:项目根目录小写_指定的服务名_服务个数的序号
    # deploydjango_db_1
    db:
      # 指定镜像的名称
      image: mariadb
      # 覆盖默认的CMO,指定运行容器时(docker run)需要运行的命令或者参数
      command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
      volumes: 
        - mysql_db:/var/lib/mysql
      # 指定容器重启的策略
      restart: always
      # 指定环境变量
      environment: 
        MYSQL_ROOT_PASSWORD: pythonvip
        MYSQL_DATABASE: test

    django_app:
      # 指定容器的启动依赖
      # 只有当db容器启动后,再启动 django_app容器
      depends_on: 
          - db
      # 指定Dockerfile所在的路径
      build: ./django_app_docker
        # 指定构建的镜像名
      image: keyou1/django_app
      restart: always
      volumes: 
        - logs:/usr/src/app/logs
        - django_code:/usr/src/app/LearnDjango/
    web:
      depends_on: 
        - django_app
      build: ./nginx_docker
      image: keyou1/lemon-test-nginx
      restart: always
      # 端口映射
      ports: 
        - "8866:80"
        - "8000:8000"
      volumes: 
        - logs:/var/log/nginx/

# 指定容器使用的数据卷
volumes: 
    # deploydjango_mysql_db
    # 数据卷名为:项目根目录小写_指定的数据卷名
    mysql_db:
    django_code:
    logs:

启动

在docker-compose.yml文件所在路径下

代码语言:javascript
复制
$ docker-compose up

项目部署

以之前完成的 ApiTest项目为例:

  1. 收集静态文件

setting.py文件中

代码语言:javascript
复制
# 收集静态文件
# 1. 在项目根路径下创建xx文件夹
# 2. 执行收集命令 python manage.py collectstatic
STATIC_ROOT = os.path.join(BASE_DIR, 'front_ends/static')
  1. 前端代码打包

lemon-test/package.json

打包结果:

将两者合并

  1. 放置到nginx中
  1. 运行项目Dockerfile并推送至Docker Hub
代码语言:javascript
复制
$ $ docker build ./ -t  apitest:last
# 登录docker hub
$ docker login
$ docker tag apitest:last zhongxin1111/apitest
$ docker push zhongxin1111/apitest
  1. 运行 docker-compose.yml
代码语言:javascript
复制
$ docker-compose up -d
代码语言:javascript
复制
# 指定版本信息
version: '3'

# 指定服务(启动容器)
services: 
    # 服务名:项目根目录小写_指定的服务名_服务个数的序号
    # deploydjango_db_1
    db:
      # 指定镜像的名称
      image: mariadb
      # 覆盖默认的CMO,指定运行容器时(docker run)需要运行的命令或者参数
      command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
      volumes: 
        - mysql_db:/var/lib/mysql
      # 指定容器重启的策略
      restart: always
      # 指定环境变量
      environment: 
        MYSQL_ROOT_PASSWORD: pythonvip
        MYSQL_DATABASE: test

    django_app:
      # 指定容器的启动依赖
      # 只有当db容器启动后,再启动 django_app容器
      depends_on: 
          - db
      # 指定Dockerfile所在的路径
      build: ./django_app_docker
        # 指定构建的镜像名
      image: zhongxin1111/apitest
      restart: always
      volumes: 
        - logs:/usr/src/app/logs
        - django_code:/usr/src/app/LearnDjango/
    web:
      depends_on: 
        - django_app
      build: ./nginx_docker
      image: keyou1/lemon-test-nginx
      restart: always
      # 端口映射
      ports: 
        - "8866:80"
        - "8000:8000"
      volumes: 
        - logs:/var/log/nginx/

# 指定容器使用的数据卷
volumes: 
    # deploydjango_mysql_db
    # 数据卷名为:项目根目录小写_指定的数据卷名
    mysql_db:
    django_code:
    logs:

具体代码见:

https://github.com/zx490336534/ApiTest/tree/master/DeployApiTest

Docker Swarm

  • 集群
  • 大型应用
  • 高性能 高效率 高可用
  • 无中心设计
  • 横向 纵向伸缩
  • 多主机网络
  • 服务发现
  • 负载均衡
  • 回滚更新

Swarm manager

  • 切换 加入 移除 维护 节点
  • 最小的集群至少需要5个节点

Swarm work

  • 运行任务的节点
  • 托管容器任务

创建集群

  • 初始化
  • docker swarm

由于没有环境,所以不再深入

见:https://docs.docker.com/swarm/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试游记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Docker Compose
    • 安装
      • 删除无用的网络
        • 删除无用的数据卷
          • 编写docker-compose.yml
            • 启动
            • 项目部署
            • Docker Swarm
              • Swarm manager
                • Swarm work
                  • 创建集群
                  相关产品与服务
                  容器服务
                  腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档