溯源‘NFT链游系统开发’源码技术搭建

您所在的位置:网站首页 元宇宙gamefinft 溯源‘NFT链游系统开发’源码技术搭建

溯源‘NFT链游系统开发’源码技术搭建

#溯源‘NFT链游系统开发’源码技术搭建| 来源: 网络整理| 查看: 265

在容器内部无法获取容器名称时,如何操作? 当创建容器时,我们可以通过记录容器名称与ID到redis中。 在容器内部,通过 cat /proc/self/cgroup 获取容器ID。

应用场景

在容器内部,想要获取容器名称,替换容器内某些文件内的字符串, 代码如下:

# -*-coding:utf-8-*- import os import redis def alter(file, new_str, old_str="abc_123abc"): """ 替换文件中的字符串 file:文件名 old_str:就字符串 new_str:新字符串 """ file_data = "" with open(file, "r") as f: for line in f: if old_str in line: line = line.replace(old_str, new_str) file_data += line with open(file, "w") as f: f.write(file_data) def get_container_name(): db = redis.Redis(host="192.168.0.111", port=6380, decode_responses=False) # start: in container, run next code ------------------------------------------------- cmd = "cat /proc/self/cgroup" output = os.popen(cmd) rests = output.readlines() container_message= rests[-1] if not container_message: container_id = "abc" else: container_id = container_message.strip().split("docker-")[-1][:12] # end. ---------------------------------------------------------------------------------- container_name = None if container_id != "abc": key_name = "nm_" + container_id container_name = db.hget("container_msg", key_name) if container_name: container_name = container_name.decode("utf-8") return container_name def run(): nginx_conf = "/etc/nginx/nginx.conf" galaxy_yml = "/galaxy-central/config/galaxy.yml" container_name = get_container_name() if container_name is not None: alter(nginx_conf, container_name) os.popen("nginx -s reload") # os.popen("cp /galaxy-central/config/galaxy.yml.sample /galaxy-central/config/galaxy.yml") alter(galaxy_yml, container_name) print("Replacement string 'abc_123abc' succeeded") else: print("Replacement string 'abc_123abc' failed") if __name__ == '__main__': run()


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3