Parker 是一个轻量级打包工具与容器运行时,一条命令将工作目录打包成可执行文件。
示例是一个 c 语言编写的 ip 解析服务 gcc -o ipservice
,其依赖 ipdb 资源文件。
使用 parker 将可执行文件 ipservice 和其依赖的 assert 压缩并打包成新的可执行文件 ipservice-c。
在目标机器上运行 ipservice-c 将会生成一个轻量的容器环境来运行原始的 ipservice 服务和其关联的资源文件。
⚙️ 安装
从 github releases 中下载并解压 Parker 安装包。推荐将解压后的 parker 文件夹移动到/usr/local/
下,并将/usr/local/parker/bin
目录加入到系统环境变量。
> parker --version
1.0.1
📦 使用
cd 到工作目录,执行 parker :target
该命令将 :target 连同当前的工作目录一起打包成一个 :target-c
可执行文件,将可执行文件放到目标机器上运行即可。
> cd :workdir && parker :target
示例
上面的可执行文件+资源文件打包是标准使用示例,当然也有一些非标准的使用方式,比如以一个 python3.11 编写的 server 为例子
> tree .
├── bar.png
├── foo.txt
├── python # cp /usr/bin/python3.11 ./
└── server.py
0 directories, 4 files
server.py 内容如下
from http.server import SimpleHTTPRequestHandler, HTTPServer
def run():
print("listen on http://127.0.0.1:8000")
server_address = ('127.0.0.1', 8000)
httpd = HTTPServer(server_address, SimpleHTTPRequestHandler)
httpd.serve_forever()
run()
cd 到工作目录中执行 parker python
,你将会得到一个 python-c
文件,这就是打包好的可执行文件,将其上传到目标机器中执行即可。
> parker python
python-c
├── server.py
├── python
├── foo.txt
└── bar.png
🍻 parker successful
------------------------------------------------------------------------ move pyhon-c to target
> tree .
.
└── python-c
0 directories, 1 file
------------------------------------------------------------------------ run python-c
> ./python-c server.py
listen on http://127.0.0.1:8000
此处 python-c 会将参数传递给 python 进程。
❗️ parker 不解决 python 的动态编译问题。
评论