最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python 如何把docker-compose.yaml導(dǎo)入到數(shù)據(jù)庫(kù)相關(guān)條目里

 更新時(shí)間:2021年01月15日 10:06:26   作者:怠惰的小小白  
這篇文章主要介紹了python 如何把docker-compose.yaml導(dǎo)入到數(shù)據(jù)庫(kù)相關(guān)條目里?下面小編就為大家介紹一下實(shí)現(xiàn)方式,一起跟隨小編過(guò)來(lái)看看吧

實(shí)現(xiàn)將docker-compose.yaml導(dǎo)入相關(guān)的數(shù)據(jù)庫(kù)條目的功能,利用python腳本,yaml、sqlalchemy、json等模塊實(shí)現(xiàn)。

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導(dǎo)入到數(shù)據(jù)庫(kù)的docker-compose表中。
docker-compose表創(chuàng)建語(yǔ)句:
 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)

補(bǔ)充:docker-compose.yaml的編寫(xiě)

當(dāng)我們打包好了鏡像的時(shí)候,一個(gè)一個(gè)區(qū)整理的時(shí)候,也是很浪費(fèi)功夫,尤其是我們修改了一些代碼的時(shí)候

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

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • Python用字典構(gòu)建多級(jí)菜單功能

    Python用字典構(gòu)建多級(jí)菜單功能

    這篇文章主要介紹了Python用字典構(gòu)建多級(jí)菜單功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python基于回溯法子集樹(shù)模板解決馬踏棋盤問(wèn)題示例

    Python基于回溯法子集樹(shù)模板解決馬踏棋盤問(wèn)題示例

    這篇文章主要介紹了Python基于回溯法子集樹(shù)模板解決馬踏棋盤問(wèn)題,簡(jiǎn)單描述了國(guó)際象棋馬踏棋盤問(wèn)題,并結(jié)合實(shí)例形式分析了Python使用回溯法子集樹(shù)模板解決馬踏棋盤問(wèn)題的具體步驟與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2017-09-09
  • 用python 批量操作redis數(shù)據(jù)庫(kù)

    用python 批量操作redis數(shù)據(jù)庫(kù)

    這篇文章主要介紹了如何用python 批量操作redis數(shù)據(jù)庫(kù),幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-03-03
  • 2023巨詳細(xì)的Python安裝庫(kù)教程(以pycharm和Anaconda安裝pygame為例)

    2023巨詳細(xì)的Python安裝庫(kù)教程(以pycharm和Anaconda安裝pygame為例)

    這篇文章主要給大家介紹了巨詳細(xì)的Python安裝庫(kù)教程,文中以pycharm和Anaconda安裝pygame為例,通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • 基于Python實(shí)現(xiàn)自制拼圖小游戲

    基于Python實(shí)現(xiàn)自制拼圖小游戲

    這篇文章主要為大家詳細(xì)介紹得了如何利用Python中pygame的這個(gè)非標(biāo)準(zhǔn)庫(kù)來(lái)做個(gè)小游戲-拼圖,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以嘗試一下
    2022-11-11
  • python基于watchdog庫(kù)全自動(dòng)化監(jiān)控目錄文件

    python基于watchdog庫(kù)全自動(dòng)化監(jiān)控目錄文件

    這篇文章主要介紹了python基于watchdog庫(kù)全自動(dòng)化監(jiān)控目錄文件,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-03-03
  • Python使用迭代器打印螺旋矩陣的思路及代碼示例

    Python使用迭代器打印螺旋矩陣的思路及代碼示例

    用Python的itertools模塊來(lái)創(chuàng)建具有迭代功能的函數(shù)十分具有技巧性,這里我們就來(lái)看一下借助itertools模塊、Python使用迭代器打印螺旋矩陣的思路及代碼示例
    2016-07-07
  • ubuntu系統(tǒng)如何從python3.7升級(jí)到python3.8

    ubuntu系統(tǒng)如何從python3.7升級(jí)到python3.8

    這篇文章主要給大家介紹了關(guān)于ubuntu系統(tǒng)如何從python3.7升級(jí)到python3.8的相關(guān)資料,Python是一種廣泛使用的編程語(yǔ)言,而Ubuntu是一個(gè)流行的開(kāi)源操作系統(tǒng),通過(guò)升級(jí)Python您可以獲得新功能、性能改進(jìn)和安全修復(fù),需要的朋友可以參考下
    2023-11-11
  • Django-Scrapy生成后端json接口的方法示例

    Django-Scrapy生成后端json接口的方法示例

    這篇文章主要介紹了Django-Scrapy生成后端json接口的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • pycharm命令終端運(yùn)行python文件以及傳遞參數(shù)方式

    pycharm命令終端運(yùn)行python文件以及傳遞參數(shù)方式

    這篇文章主要介紹了pycharm命令終端運(yùn)行python文件以及傳遞參數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評(píng)論

防城港市| 溧水县| 贺兰县| 玉环县| 简阳市| 榕江县| 旺苍县| 卓资县| 广西| 泽库县| 资中县| 五台县| 康马县| 依安县| 聂荣县| 普陀区| 四会市| 龙井市| 绥芬河市| 通化县| 天气| 化德县| 古丈县| 绩溪县| 桐乡市| 襄樊市| 鲁山县| 苏州市| 西畴县| 大荔县| 长岛县| 昌图县| 澳门| 通海县| 六安市| 额尔古纳市| 思茅市| 海盐县| 韶关市| 交口县| 汉中市|