您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
今天就跟大家聊聊有关利用python怎么将docker-compose.yaml导入到数据库中,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
实现将docker-compose.yaml导入相关的数据库条目的功能,利用python脚本,yaml、sqlalchemy、json等模块实现。
docker-compose.yaml
_version: "1" services: webapp: build: context: ./dir dockerfile: Dockerfile-alternate args: buildno: 1
python deme文件。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import yaml
import traceback
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy import Column, DateTime, Index, Integer, String, Text, text, BigInteger
from sqlalchemy.ext.declarative import declarative_base
import datetime
import json
import base64
"""
作用:将docker-compose.yaml导入到数据库的docker-compose表中。
docker-compose表创建语句:
CREATE TABLE `docker_compose` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`services` text NOT NULL COMMENT '@desc services',
`creator` int(11) DEFAULT '0',
`modifier` int(11) DEFAULT '0',
`gmt_created` datetime NOT NULL,
`gmt_modified` datetime NOT NULL,
`_version` varchar(64) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1092 DEFAULT CHARSET=utf8
"""
def now():
return datetime.datetime.now()
BASE = declarative_base()
class DockerCompose(BASE):
__tablename__ = 'docker_compose'
id = Column(BigInteger, primary_key=True)
services = Column(Text, nullable=False)
_version = Column(String(64))
creator = Column(Integer, server_default=text("'0'"))
modifier = Column(Integer, server_default=text("'0'"))
gmt_created = Column(DateTime, nullable=False)
gmt_modified = Column(DateTime, nullable=False)
def get_session(db_connection):
"""
db connection api
:param db_connection:
:return:
"""
DB_URL = 'mysql+pymysql://%s' % (db_connection,)
engine = create_engine(DB_URL, pool_size=25, pool_recycle=3600, echo=False)
Session = sessionmaker(bind=engine)
return Session()
def load_yaml(filename):
try:
with open(filename, 'r') as fh:
return yaml.safe_load(fh)
except (IOError, yaml.YAMLError) as e:
raise Exception(u"{}".format(traceback.format_exc()))
def import_engine_compose(instance_config, dbConnection):
services = instance_config['services']
_version = instance_config.get('_version')
session = get_session(dbConnection)
docker_compose = DockerCompose(
gmt_created=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
gmt_modified=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
creator=999,
modifier=999,
_version=_version,
services=json.dumps(services)
)
session.add(docker_compose)
session.commit()
def main(dbConnection, filepath="docker_compose.yaml"):
docker_compose_config = load_yaml(filepath)
import_engine_compose(docker_compose_config, dbConnection)
if __name__ == '__main__':
dbConnection = "xxx"
DB_CONNECTION = base64.b64decode(dbConnection)
main(DB_CONNECTION)补充:docker-compose.yaml的编写
当我们打包好了镜像的时候,一个一个区整理的时候,也是很浪费功夫,尤其是我们修改了一些代码的时候
version: "2" services: mysql: image: mysql:mysql hostname: mysql ports: - "3306:3306" volumes: - "/data/mysql:/var/lib/mysql" restart: always backend: image: backend:0.5 command: "python3 main.py" hostname: backend volumes: - "/data/files:/app/files" network_mode: "host" depends_on: - mysql restart: always frontend: image: frontend:0.5 hostname: frontend volumes: - "/Users/gaven/Desktop/anji/frontend/web/nginx.conf:/etc/nginx/nginx.conf" - "/Users/gaven/Desktop/anji/frontend/web/default.conf:/etc/nginx/conf.d/default.conf" ports: - "80:80" network_mode: "host" restart: always
看完上述内容,你们对利用python怎么将docker-compose.yaml导入到数据库中有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。