如何基于docker构建和发布Python应用程序?

Python014

如何基于docker构建和发布Python应用程序?,第1张

Docker是一个开源的容器平台,可以用于构建、发布和运行Python应用程序。下面是一个大致的构建和发布Python应用程序的步骤:

构建Docker镜像:首先需要构建Docker镜像,它是用于打包应用程序及其所有依赖项的容器。Docker镜像是通过Dockerfile定义的,Dockerfile是一个文本文件,包含了容器如何被构建的说明。

在Docker中运行应用程序:通过运行Docker镜像创建Docker容器,在Docker容器中运行Python应用程序。

发布Docker镜像:将Docker镜像上传到Docker仓库,供他人使用。可以使用Docker Hub或私有Docker仓库等。

部署Docker容器:将Docker镜像从仓库下载到生产环境,并在生产环境中运行Docker容器,以部署Python应用程序。

这些步骤可以通过脚本自动化来完成,例如使用CI/CD工具(如Jenkins、Travis CI等)。这样,每次代码提交时,可以自动构建、测试、发布和部署应用程序,从而实现快速和高效的交付。

发布自己的python包

1. 首先先去PyPI注册帐号

2. 配置~/.pypirc如下:

[distutils]

index-servers =

pypi

pypitest

[pypi]

username:ShaoZhengjiang

password:mypassword

[pypitest]

username:ShaoZhengjiang

password:mypassword

3. 然后注册并上传自己的包到测试服务器

pypi提供了一个测试服务器,我们可以在这个测试服务器上做测试。

python setup.py register -r pypitest

然后

python setup.py sdist upload -r pypitest

若没有问题我们应该不会得到任何错误。

4. 上传至PyPI

若上面的测试成功,我们就可以按照相同的步骤将包注册并上传。

python setup.py register -r pypi

python setup.py sdist upload -r pypi

Ok,之后我们就可以在PyPI上看到我们自己的包了。(https://pypi.python.org/pypi/vaspy/)

1、下载并安装py2exe,可下载最新版本。

2、编写安装脚本,比较简单,不过多解释,如下:

Screenshot_setup.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-

from distutils.core import setup

import py2exe

includes = ["encodings", "encodings.*"]

data_files = ['CameraDll.dll']

options = {"py2exe":

{ "compressed": 1,

"optimize": 2,

"bundle_files": 1,

"includes": includes

}

}

setup(

version = "1.0",

description = "Screenshot Tool",

name = "Screenshot Tool",

options = options,

zipfile=None,

data_files = data_files,

console=[{"script": "Screenshot.py", "icon_resources": [(1, "Screenshot.ico")] }]

)

各参数含义见第5小节或执行python命令行下执行help(py2exe)查看。

3、打包程序:

a、将要找包的程序、文件和打包脚本放在同一目录下,如下:

E:\tmp\pyexe_tmp>tree /F

文件夹 PATH 列表

卷序列号码为 0007F240 101F:F68D

E:.

CameraDll.dll

screenshot.ico

Screenshot.py

screenshot_setup.py

没有子文件夹

E:\tmp\pyexe_tmp>

b、执行打包脚本:

E:\tmp\pyexe_tmp>python screenshot_setup.py py2exe

python screenshot_setup.py py2exe

running py2exe

creating E:\tmp\pyexe_tmp\build

creating E:\tmp\pyexe_tmp\build\bdist.win32

creating E:\tmp\pyexe_tmp\build\bdist.win32\winexe

creating E:\tmp\pyexe_tmp\build\bdist.win32\winexe\collect-2.6

creating E:\tmp\pyexe_tmp\build\bdist.win32\winexe\bundle-2.6

creating E:\tmp\pyexe_tmp\build\bdist.win32\winexe\temp

creating E:\tmp\pyexe_tmp\dist

*** searching for required modules ***

*** parsing results ***

*** finding dlls needed ***

*** create binaries ***

*** byte compile python files ***

writing byte-compilation script 'e:\tmp\tmp1ecbcw.py'