在 Windows 上设置 Dockerised 命令行应用程序
Setting up Dockerised command line application on Windows
我正在向 Windows、OSX 和 Linux 用户分发命令行应用程序。应用程序的目标受众是开发人员、系统管理员和技术高级用户。
我熟悉命令行工具和 Docker 在 Unix 上的工作方式。但是,我已经 10 多年没有使用 Microsoft Windows 进行开发了。
我想这样做,以便当人们从命令提示符或 PowerShell 中键入 app
时,docker 入口点将被执行,就像它是本机命令行应用程序一样。但是我不知道为 Windows 用户设置它的最佳方法是什么:我应该以某种方式在 PATH 中创建一个虚拟 EXE,我可以以某种方式别名 Docker 启动或为 Docker 做Windows 本身提供了一些工具来轻松地 运行 图像而无需复杂的设置和配置文件过程。
更复杂的是,对于 app
我需要做一些虚拟卷映射,以便它可以从主机驱动器读取和写入文件,例如它可以处理为其提供的任何输入文件。它还将在 Windows.
上与本地主机或外部 HTTP 服务器进行通信 运行ning
如何为 app
进行顺利的安装过程的最佳实践是什么,这样我就可以让用户免于冗长的命令行命令或复杂的配置过程,并且命令可以在他们的默认命令行会话中使用?
我可以给用户一个 liner 命令来为他们设置 app
和 Docker 图像吗?
这是之前的问题,我如何创建 Docker 图像:
如果您的应用程序使用的是近乎通用的脚本语言 (Python);您的用户目标是开发人员和系统管理员(他们可能已经安装了 Python);您的应用程序的一个关键部分是与非 Docker 主机文件和其他服务进行交互;那么您可能不是在寻找 Docker 容器。该应用程序应直接 运行 在主机上可用。
Python 已经有 a fairly robust packaging system,我会依靠它作为您的主要分发机制。技术熟练的用户不会害怕
python -m venv $HOME/myapp
. $HOME/myapp/activate
pip install myapp
(记住原生的Docker for Linux需要root权限才能做任何事情;而Docker for Mac/Windows只能访问部分文件,一般来说"near" 用户的主目录;联系主机和管理文件权限对于真正与主机一起工作但出于某种原因 运行 in Docker.)
should I somehow create a dummy EXE in PATH
创建包装器批处理文件 (*.cmd
) - cmd.exe
和 PowerShell 都能够像二进制可执行文件一样调用- 并将其放在 %PATH%
.
中列出的目录之一
- 但是 Windows 上没有标准化目录(而 Linux 有
/usr/bin
和 macOS /usr/local/bin
),因此您的设置过程可能必须创建一个和使用 setx.exe
将其持久添加到 %PATH%
.
使包装器批处理文件按需执行设置,然后调用目标 Docker 图像,传递所有参数 (.*
)。
Can I give the users one liner command that would set up the app and Docker image for them?
您可以设计一个冗长的 PowerShell 命令来执行上述所有操作,或者使用更简单的引导命令来下载和执行在线存储的安装脚本。
包装器批处理文件示例 app.cmd
:
@echo off
setlocal
set appName="%~n0"
:: # perform on-demand configuration...
:: # Invoke the application in the target container.
sudo docker run -it %appName%:0.1 %appName%.py %*
我正在向 Windows、OSX 和 Linux 用户分发命令行应用程序。应用程序的目标受众是开发人员、系统管理员和技术高级用户。
我熟悉命令行工具和 Docker 在 Unix 上的工作方式。但是,我已经 10 多年没有使用 Microsoft Windows 进行开发了。
我想这样做,以便当人们从命令提示符或 PowerShell 中键入 app
时,docker 入口点将被执行,就像它是本机命令行应用程序一样。但是我不知道为 Windows 用户设置它的最佳方法是什么:我应该以某种方式在 PATH 中创建一个虚拟 EXE,我可以以某种方式别名 Docker 启动或为 Docker 做Windows 本身提供了一些工具来轻松地 运行 图像而无需复杂的设置和配置文件过程。
更复杂的是,对于 app
我需要做一些虚拟卷映射,以便它可以从主机驱动器读取和写入文件,例如它可以处理为其提供的任何输入文件。它还将在 Windows.
如何为 app
进行顺利的安装过程的最佳实践是什么,这样我就可以让用户免于冗长的命令行命令或复杂的配置过程,并且命令可以在他们的默认命令行会话中使用?
我可以给用户一个 liner 命令来为他们设置 app
和 Docker 图像吗?
这是之前的问题,我如何创建 Docker 图像:
如果您的应用程序使用的是近乎通用的脚本语言 (Python);您的用户目标是开发人员和系统管理员(他们可能已经安装了 Python);您的应用程序的一个关键部分是与非 Docker 主机文件和其他服务进行交互;那么您可能不是在寻找 Docker 容器。该应用程序应直接 运行 在主机上可用。
Python 已经有 a fairly robust packaging system,我会依靠它作为您的主要分发机制。技术熟练的用户不会害怕
python -m venv $HOME/myapp
. $HOME/myapp/activate
pip install myapp
(记住原生的Docker for Linux需要root权限才能做任何事情;而Docker for Mac/Windows只能访问部分文件,一般来说"near" 用户的主目录;联系主机和管理文件权限对于真正与主机一起工作但出于某种原因 运行 in Docker.)
should I somehow create a dummy EXE in PATH
创建包装器批处理文件 (
中列出的目录之一*.cmd
) -cmd.exe
和 PowerShell 都能够像二进制可执行文件一样调用- 并将其放在%PATH%
.- 但是 Windows 上没有标准化目录(而 Linux 有
/usr/bin
和 macOS/usr/local/bin
),因此您的设置过程可能必须创建一个和使用setx.exe
将其持久添加到%PATH%
.
- 但是 Windows 上没有标准化目录(而 Linux 有
使包装器批处理文件按需执行设置,然后调用目标 Docker 图像,传递所有参数 (
.*
)。
Can I give the users one liner command that would set up the app and Docker image for them?
您可以设计一个冗长的 PowerShell 命令来执行上述所有操作,或者使用更简单的引导命令来下载和执行在线存储的安装脚本。
包装器批处理文件示例 app.cmd
:
@echo off
setlocal
set appName="%~n0"
:: # perform on-demand configuration...
:: # Invoke the application in the target container.
sudo docker run -it %appName%:0.1 %appName%.py %*