为人类提供简易的生成器停靠文件。

pydocker的Python项目详细描述


Pydocker

为人类提供简易生成器停靠文件

Let's use power of python for generate dockerfile!

Advantages:
    - all features from python: variables, multiline strings, code reuse.
    - keep all your code in one file [bash, python, conf, ...]
    - generate many docker files from one template [testing, production, ]
    - generate sequence [Dockerfile.debian => Dockerfile.python => Dockefile.yourapp, ...]
    - or if you not expert in sed, awk - you can use python for modify conf files : )

easy code, easy costomize

安装

# sudo apt-get install python-setuptools && sudo easy_install pip
pip install -U pydocker

使用

# Dockerfile.py
importsysimportloggingimportpydocker# github.com/jen-soft/pydockerlogging.getLogger('').setLevel(logging.INFO)logging.root.addHandler(logging.StreamHandler(sys.stdout))classDockerFile(pydocker.DockerFile):"""   add here your custom features   """d=DockerFile(base_img='debian:8.2',name='jen-soft/custom-debian:8.2')d.RUN_bash_script('/opt/set_repo.sh',r'''
cp /etc/apt/sources.list /etc/apt/sources.list.copy

cat >/etc/apt/sources.list <<EOLdeb     http://security.debian.org/ jessie/updates maindeb-src http://security.debian.org/ jessie/updates maindeb     http://ftp.nl.debian.org/debian/ jessie maindeb-src http://ftp.nl.debian.org/debian/ jessie maindeb     http://ftp.nl.debian.org/debian/ testing mainEOL

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC
apt-get clean && apt-get update
''')d.EXPOSE = 80d.WORKDIR = '/opt'# d.ENTRYPOINT = ["/opt/www-data/entrypoint.sh"]d.CMD = ["python", "--version"]d.build_img()
# >_ console:

python3 Dockerfile.py
docker images

可选语言:

  • 从repo安装(不带pip)

    F=$(python -c "import site; print(site.getsitepackages()[0]+'/pydocker.py')")
    sudo wget -v -N raw.githubusercontent.com/jen-soft/pydocker/master/pydocker.py -O $F
    
  • 无需任何安装:

    try:fromurllib.requestimporturlopen# python-3exceptImportError:fromurllibimporturlopen# python-2exec(urlopen('https://raw.githubusercontent.com/jen-soft/pydocker/master/pydocker.py').read())#d=DockerFile(base_img='debian:8.2',name='jen-soft/custom-debian:8.2')# ...
    • 如果您只需要构建img,会很有帮助
  • 不需要安装

    #!/usr/bin/env python# -*- coding: utf-8 -*-try:frompydockerimportDockerFile# pip install -U pydockerexceptImportError:try:fromurllib.requestimporturlopen# python-3exceptImportError:fromurllibimporturlopen# python-2#exec(urlopen('https://raw.githubusercontent.com/jen-soft/pydocker/master/pydocker.py').read())#importsysimportlogginglogging.getLogger('').setLevel(logging.INFO)logging.root.addHandler(logging.StreamHandler(sys.stdout))classMyDockerFile(DockerFile):"""   add here your custom features   """#d=MyDockerFile(base_img='debian:8.2',name='jen-soft/debian:8.2')# ...
    • 如果您需要共享dockerfile.py文件,会很有帮助

许可证

这项工作是在apache license 2.0<;ins>;和mit license下双重授权的。 <;ins>;如果您使用此工作,则可以在其中一个选项之间进行选择。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java Web服务是日期Java的更好选择。util。日期限制?   java Flink cassandraOutputFormat元组需要冻结值   java Split BigInteger,计算数字?   java通过servlet查询mysql中是否存在密钥   在安卓 studio中使用java从google驱动器链接显示pdf文件?   未触发java Spring Web流转换   java错误:二进制运算符“>=”的操作数类型不正确,否则如果(bmi<=18.5>=25.0)   java MySQL upsert(在重复键上)使用JDBC准备语句   如何在java8中执行多个链式操作?   java在Hibernate中获取实体但为空值的属性   java 安卓。小装置。RelativeLayout不能投射到安卓x。抽屉布局。小装置。抽屉布局   Java输入字母   Java中的继承父和子参数化构造函数   java当JtextField被填充时,必须填充JTable单元格。怎么做?   sql如何解决java中的写数据定义操作?   java模块X的多个工件被检索到ApacheIvy中的同一个文件中?   java预览在发布时不显示(Android Studio)