代码拉取完成,页面将自动刷新
from flask import Flask, request, jsonify
import docker
from waitress import serve
import logging
# 创建一个logger
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
# 创建一个handler,用于在控制台上打印日志
ch = logging.StreamHandler()
# 定义handler的输出格式
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)
# 给logger添加handler
logger.addHandler(ch)
app = Flask(__name__)
@app.route('/')
def hello():
return '<a href="https://gitee.com/yunwe/con-man"> ConMan 使用文档</a>'
@app.route('/update_container', methods=['POST'])
def create_container():
data = request.get_json()
token = "QP77ZUFXNO0PO9AWVPSYLS5WCXUSCA1NCL2BSLV8"
logging.info(f"Received request: {data}")
# 检查 token 是否存在并且是否匹配
if 'token' not in data or data['token'] != token:
return jsonify({'message': '未认证!'}), 401
client = docker.DockerClient(base_url=data['dockerUrl'])
# 检查是否存在同名的容器
try:
existing_container = client.containers.get(data['containerName'])
# 如果存在,则停止并删除它
existing_container.stop()
existing_container.remove()
except docker.errors.NotFound:
# 如果容器不存在,可以继续
pass
except Exception as e:
return jsonify({'error': str(e)}), 500
# 处理 volumes 字段
volumes = {k: {'bind': v, 'mode': 'rw'} for k, v in data['volumes'].items()}
container = client.containers.run(
image=data['image'],
name=data['containerName'],
volumes=volumes,
environment=data['env'],
network_mode=data['networkMode'],
restart_policy={"Name": data['restart']},
ports=data['ports'],
detach=True
)
return jsonify({'message': 'Container created', 'container_id': container.short_id}), 201
if __name__ == '__main__':
logger.info("ConMan 应用已正常启动!")
serve(app, host='0.0.0.0', port=5000)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。