当前位置: 首页 > news >正文

宠物网站策划书最大的搜索网站排名

宠物网站策划书,最大的搜索网站排名,幕墙配件在那个网站做推广好,上海网安网站建设目前有个python应用需要在容器镜像内拉取git私有仓库的代码,一开始的想法是用GitPython,折腾一番ssh私钥和known_hosts问题后,发现还是在镜像中封装个git最省事,然后用subprocess调用系统命令,镜像体积也没有想象中增加…

目前有个python应用需要在容器镜像内拉取git私有仓库的代码,一开始的想法是用GitPython,折腾一番ssh私钥和known_hosts问题后,发现还是在镜像中封装个git最省事,然后用subprocess调用系统命令,镜像体积也没有想象中增加特别多。

准备ssh私钥和known_hosts文件

应用内通过repo的ssh url克隆和拉取仓库,所以ssh私钥和known_hosts要封装到镜像中。

  1. 生成ssh密钥文件。一般来说提示输入直接回车即可。生成的$HOME/.ssh/id_ed25519为私钥文件,是需要拷贝到镜像中的。$HOME/.ssh/id_ed25519.pub为公钥文件,文件内容需要添加到远程仓库的ssh密钥配置中。
ssh-keygen -t ed25519
  1. 准备known_hosts文件,文件内容可以从其它主机拷贝一份。其实ssh密钥文件也可以从其它主机拷贝,只要对应的公钥在git远程仓库的ssh配置中即可。known_hosts文件内容示例。
gitee.com ssh-ed25519 AxxxxxxxxxxxxxxxxxxxxN

在项目目录中创建一个名为.ssh的目录,然后把id_ed25519known_hosts文件拷贝到这个目录下,并修改文件权限为600。这个目录待会需要封装到镜像中。

chmod 600 id_ed25519 known_hosts

编写python代码

这里只是个demo,拉取私有仓库的代码到本地,然后拷贝出需要的目录或文件。注意代码里面用的都是容器内路径。

import subprocess
import os
import shutil
repo_url = "git@gitee.com:zhangsan/scout.git"
repo_dir = "/tmp/scout"
def repo_clone():cmd = f"git clone --depth=1 --single-branch {repo_url} {repo_dir}"if os.path.exists(repo_dir):print(f"{repo_dir} has exist")returnruncmd(cmd)
def repo_pull():cmd = f"cd {repo_dir};git pull"runcmd(cmd)if not os.path.exists(f"{repo_dir}/prod"):print(f"{repo_dir}/prod is not exist")returndest_path = "/home/zhangsan/app/prod"if not os.path.exists(dest_path):os.makedirs(dest_path)shutil.copytree(f"{repo_dir}/prod", dest_path, dirs_exist_ok=True)
def runcmd(command):ret = subprocess.run(command, shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT,encoding="utf-8",timeout=10,)if ret.returncode == 0:print("success")print(ret.stdout)else:print(f"fail code: {ret.returncode}")print(ret.stdout)
if __name__ == "__main__":repo_clone()repo_pull()

Dockerfile

目录层级如下

.
├── app
│   └── demo.py
├── Dockerfile
└── .ssh├── id_ed25519└── known_hosts

编写Dockerfile文件

FROM python:3.8-alpine
# 1. 修改apline镜像源
# 2. 安装git和ssh客户端并删除apk缓存
# 3. 创建普通用户及其用户组
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories \&& apk add --no-cache git openssh \&& rm -rf /tmp/* /root/.cache /var/cache/apk/* \&& addgroup -g 1010 zhangsan \&& adduser -s /bin/sh -G zhangsan -u 10101 -h /home/zhangsan zhangsan -D
# 将相关文件添加到镜像中
ADD --chown=zhangsan:zhangsan .ssh /home/zhangsan/.ssh
ADD --chown=zhangsan:zhangsan app /home/zhangsan/app
# 指定运行用户, 工作目录和启动命令
USER zhangsan
WORKDIR /home/zhangsan/app
CMD python3 demo.py

打包docker镜像

docker build -t pygit:0.0.1 .

测试,创建一个临时容器

docker run -it --rm --name pygit pygit:0.0.1 sh

在测试容器内测试能否正常执行

python3 demo.py
http://www.cadmedia.cn/news/8400.html

相关文章:

  • 沈阳关键词优化公司排名优化公司口碑哪家好
  • logo在线设计生成器免费下载谷歌seo博客
  • 网站开发是什么工作新东方考研班收费价格表
  • 黄页网大全免费软件seo顾问收费
  • 陕西建设厅网站人才库360推广登录入口
  • 建设 静态网站广州seo代理
  • 网站架构设计师岗位要求做网页的网站
  • wordpress内容模版文件在哪个目录安卓优化大师新版
  • 建设银行官方网站企业网银站长工具爱情岛
  • 网站建设亿玛酷专注百度推广代理查询
  • 贵州省建设厅二建报名网站seo综合查询工具有什么功能
  • 哪里网站可以做微信头像专门搜索知乎内容的搜索引擎
  • 广州微信网站建设公司哪家好武汉标兵seo
  • 沈阳免费做网站网站优化推广公司排名
  • 峨眉山网站建设沈阳seo优化新势力
  • 国外搜索网站排名知乎关键词排名优化
  • 页面模板资源网站优化的方法有哪些
  • 网站栏目怎么做国外b站不收费免费2023
  • 长春做网站公司百度网站收录提交入口全攻略
  • 成都模板网建站网络营销的四大要素
  • 写作网站可以签约未成年吗石家庄seo顾问
  • 在相亲网站认识了一个做红酒生意的百度竞价排名规则及费用
  • 网站设计师是做什么的网络营销成功的案例
  • 网站建设 鸿seo网络推广案例
  • 外贸自己做网站好不好一站式媒体发稿平台
  • 济南市建设工程交易网百度seo点击工具
  • 石狮市住房城乡建设委官方网站中国营销型网站有哪些
  • 网站建设公司 网络服务软文公司代写
  • 如何优化m网站com天堂网
  • 微信h5在哪个网站做网络营销的有哪些特点