如何调用docker swarm service的API来创建及更新服务

简介: 平衡的推进,先作一个原型吧。 #!/usr/bin/env python # -*- coding: utf-8 -*- import requests import json #定义docker swarm的管理节点ip,端口号,API版本,服务名, 服务URL #在后期集...

平衡的推进,先作一个原型吧。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests
import json

#定义docker swarm的管理节点ip,端口号,API版本,服务名, 服务URL
#在后期集成到自动化部署时,需要精简数据结构,完善data, 增加精准判断及空间回收
#API更多用途参考: https://docs.docker.com/engine/api/v1.29/
docker_swarm_ip_port = "ip:port"
docker_swarm_api_version = "v1.29"
docker_swarm_service_name = "tomcatbv"

get_service_url = "http://%s/%s/services/%s" %(docker_swarm_ip_port, docker_swarm_api_version, docker_swarm_service_name)

data = {
  "Name": "tomcatbv",
  "TaskTemplate": {
    "ContainerSpec": {
      "Image": "harbor_op/project_name/tomcat:20170620demo",
    },
    "Placement": {},
    "RestartPolicy": {
      "Condition": "on-failure",
      "Delay": 10000000000,
      "MaxAttempts": 10
    }
  },
  "Mode": {
    "Replicated": {
      "Replicas": 1
    }
  },
  "UpdateConfig": {
    "Parallelism": 2,
    "FailureAction": "pause",
  },
  "RollbackConfig": {
    "Parallelism": 1,
  },
  "Labels": {
    "foo": "bar"
  }
}


#创建docker swarm service服务
def create_service():
    url = "http://%s/%s/services/create" %(docker_swarm_ip_port, docker_swarm_api_version)
    data_json = json.dumps(data)
    r = requests.post(url, data=data_json)
    print r.text
    if r.status_code == 201:
        print "created ok"
    else:
        print "create error"
        sys.exit()

#更新docker swarm service服务
def update_service(version_index):
    url = "http://%s/%s/services/%s/update?version=%s" %(docker_swarm_ip_port, docker_swarm_api_version, docker_swarm_service_name, version_index)
    data_json = json.dumps(data)
    r = requests.post(url, data=data_json)
    print version_index, r.text, r.status_code
    if r.status_code == 200:
        print "updated ok"
    else:
        print "update error"
        sys.exit()

def main():
    get_service_url = "http://%s/%s/services/%s" %(docker_swarm_ip_port, docker_swarm_api_version, docker_swarm_service_name)
    r = requests.get(get_service_url)
    print get_service_url, r.status_code, r.text
    if r.status_code != 200:
        create_service()
    else:
        version_index = eval(r.text)["Version"]["Index"]
        update_service(version_index)
    

if __name__ == "__main__":
    main()

目录
相关文章
|
11天前
|
开发框架 监控 .NET
Visual Basic的Web服务和REST API开发指南
【4月更文挑战第27天】本文探讨了使用Visual Basic(VB.NET)构建Web服务和RESTful API的方法。首先介绍了Web服务的基础和REST API的概念,然后阐述了.NET Framework与.NET Core/.NET 5+对VB.NET的支持,以及ASP.NET Core在Web开发中的作用。接着,详细讲解了创建RESTful API的步骤,包括控制器与路由设置、模型绑定与验证,以及返回响应。此外,还讨论了安全措施、测试方法、部署选项和监控策略。最后强调,VB.NET开发者可以通过ASP.NET Core涉足现代Web服务开发,拓宽技术领域。
|
11天前
|
应用服务中间件 网络安全 nginx
快速上手!使用Docker和Nginx部署Web服务的完美指南
快速上手!使用Docker和Nginx部署Web服务的完美指南
|
11天前
|
Kubernetes Docker Python
《Docker 简易速速上手小册》第10章 朝着 Docker Swarm 和 Kubernetes 迈进(2024 最新版)
《Docker 简易速速上手小册》第10章 朝着 Docker Swarm 和 Kubernetes 迈进(2024 最新版)
39 0
|
11天前
|
监控 Linux 开发者
Docker服务systemd配置文件详解
Docker服务systemd配置文件详解
29 0
|
11天前
|
存储 Kubernetes C++
【专栏】Kubernetes VS Docker Swarm了解两者特点,助力选取合适容器编排工具
【4月更文挑战第27天】对比Kubernetes和Docker Swarm:K8s在可扩展性和自动化方面出色,有强大社区支持;Swarm以简易用著称,适合初学者。选择取决于项目需求、团队技能和预期收益。高度复杂项目推荐Kubernetes,快速上手小项目则选Docker Swarm。了解两者特点,助力选取合适容器编排工具。
|
11天前
|
存储 缓存 安全
API在Visual Basic中的应用:连接外部服务与扩展功能
【4月更文挑战第27天】本文探讨了在Visual Basic中使用API连接外部服务和扩展功能的方法,涵盖了API的基本概念、种类及如何使用本地和Web API。通过DllImport调用本地API,利用HttpClient和WebClient与Web API交互,同时强调了第三方API的使用和SOA架构中的API角色。安全性、性能优化和错误处理是实践中的关键点。案例研究和最佳实践有助于开发者更有效地利用API,提升Visual Basic应用程序的功能和灵活性。随着API技术的发展,Visual Basic将持续支持开发者创造更强大的应用。
|
3天前
|
运维 负载均衡 API
API服务网关的作用
【5月更文挑战第23天】API服务网关是微服务架构中的统一入口,负责请求路由、组合及协议转换,隐藏内部架构细节。
|
8天前
|
缓存 监控 API
利用Python构建高性能的Web API后端服务
随着微服务架构的普及和RESTful API的广泛应用,构建高性能、可扩展的Web API后端服务变得尤为重要。本文将探讨如何利用Python这一强大且灵活的语言,结合现代Web框架和工具,构建高效、可靠的Web API后端服务。我们将分析Python在Web开发中的优势,介绍常用的Web框架,并通过实际案例展示如何设计并实现高性能的API服务。
|
11天前
|
安全 API 开发者
智能体-Agent能力升级!新增Assistant API & Tools API服务接口
ModelScope-Agent是一个交互式创作空间,它支持LLM(Language Model)的扩展能力,例如工具调用(function calling)和知识检索(knowledge retrieval)。它已经对相关接口进行了开源,以提供更原子化的应用LLM能力。用户可以通过Modelscope-Agent上的不同代理(agent),结合自定义的LLM配置和消息,调用这些能力。
|
11天前
|
存储 安全 开发者
【Docker 专栏】Docker 与云存储服务的集成
【5月更文挑战第9天】在数字化时代,Docker和云存储服务的结合为企业和开发者提供了强大工具。Docker的高效性、可移植性和隔离性,加上云存储的扩展性、高可靠性和高可用性,通过集成可以实现数据持久化、便捷部署和资源优化。常见的集成包括AWS S3、Azure Blob Storage和Google Cloud Storage。集成时需注意安全、性能和兼容性问题,未来集成将更加紧密和智能化,助力企业创造更大价值。
【Docker 专栏】Docker 与云存储服务的集成

热门文章

最新文章