为人类提供简易的生成器停靠文件。
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 : )
安装
# 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>;如果您使用此工作,则可以在其中一个选项之间进行选择。