亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python 如何把docker-compose.yaml導入到數(shù)據(jù)庫相關條目里

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

實現(xiàn)將docker-compose.yaml導入相關的數(shù)據(jù)庫條目的功能,利用python腳本,yaml、sqlalchemy、json等模塊實現(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導入到數(shù)據(jù)庫的docker-compose表中。
docker-compose表創(chuàng)建語句:
 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的編寫

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

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

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

相關文章

  • python讀寫ini文件示例(python讀寫文件)

    python讀寫ini文件示例(python讀寫文件)

    項目用到數(shù)據(jù)庫,多個地方使用,不能硬編碼。ython支持ini文件的讀取,就在項目中使用了ini文件,下面是示例
    2014-03-03
  • pyinstaller打包可執(zhí)行程序過程中的常見錯誤解決

    pyinstaller打包可執(zhí)行程序過程中的常見錯誤解決

    這篇文章主要介紹了pyinstaller打包可執(zhí)行程序過程中的常見錯誤解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • python進階之自定義可迭代的類

    python進階之自定義可迭代的類

    這篇文章主要為大家詳細介紹了python進階之自定義可迭代的類,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • 機器學習經(jīng)典算法-logistic回歸代碼詳解

    機器學習經(jīng)典算法-logistic回歸代碼詳解

    這篇文章主要介紹了機器學習經(jīng)典算法-logistic回歸代碼詳解,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • python學生信息管理系統(tǒng)(初級版)

    python學生信息管理系統(tǒng)(初級版)

    這篇文章主要為大家詳細介紹了python學生信息管理系統(tǒng)的初級版本代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • python簡單獲取本機計算機名和IP地址的方法

    python簡單獲取本機計算機名和IP地址的方法

    這篇文章主要介紹了python簡單獲取本機計算機名和IP地址的方法,涉及Python中socket模塊的相關使用技巧,需要的朋友可以參考下
    2015-06-06
  • 教你如何使用Python開發(fā)一個釘釘群應答機器人

    教你如何使用Python開發(fā)一個釘釘群應答機器人

    在聊天工具大肆侵入我們生活各個方面的今天,各種消息無時無刻不在侵擾我們的每一寸時間,這種情況下,一個聊天的機器人就很有必要了.今天,我們來學習一下使用 Python 開發(fā)一個釘釘?shù)膽饳C器人,助你「人生苦短,少回消息」,需要的朋友可以參考下
    2021-06-06
  • tensorflow常用函數(shù)API介紹

    tensorflow常用函數(shù)API介紹

    這篇文章主要介紹了tensorflow常用函數(shù)API介紹,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • Pycharm2020最新激活碼|永久激活(附最新激活碼和插件的詳細教程)

    Pycharm2020最新激活碼|永久激活(附最新激活碼和插件的詳細教程)

    這篇文章主要介紹了Pycharm2020最新激活碼|永久激活(附最新激活碼和插件的詳細教程),本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • Python計算公交發(fā)車時間的完整代碼

    Python計算公交發(fā)車時間的完整代碼

    這篇文章主要介紹了Python計算公交發(fā)車時間的完整代碼,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02

最新評論