如何将命令行参数传递给Python的Docker容器?

如何将命令行参数传递给Python的Docker容器?

在介绍如何传递Docker容器的参数之前,我们必须了解Python命令行参数及其如何被开发人员访问。当我们希望外部程序控制Python脚本时,命令行参数非常有用。

访问Python脚本的命令行参数

第1步:创建Python脚本main.py

示例

# sys可以让我们访问传递的参数
import sys

# sys.argv[0]访问传递的第一个参数,即Python脚本名称
print("\n文件或脚本名称为:", sys.argv[0])

# 输出除文件名之外的参数
print("\n传递的参数:", end = " ")
for i in range(1, len(sys.argv)):
   print(sys.argv[i], end = " ")

# 对传递的参数进行小写操作
for i in range(1, len(sys.argv)):
   print(sys.argv[i].lower(), end = " ")
Bash

第2步:使用参数在终端上运行

#python3 main.py HELLO THIS IS TUTORIALSPOINT
Bash

输出

文件或脚本名称为: main.py
传递的参数: HELLO THIS IS TUTORIALSPOINT
hello this is tutorialspoint
Bash

将这些参数传递给Docker容器

有不同的方法可以将命令行参数传递给Docker容器。下面是一些逐步表示的方法。

使用ENTRYPOINT的Docker参数

技巧是使用entrypoints和dockerfile,将entrypoint重定向到Python文件执行。之后,只需在运行Docker容器的过程中传递所需的Python参数即可。

第1步:创建Dockerfile

示例

FROM python
WORKDIR /app
COPY . /app/
ENTRYPOINT ["python3", "main.py"]
Bash

第2步:构建映像

示例

#docker build -t arg_py .
Bash

输出

将构建上下文发送到Docker后台程序 8.192kB
1/4步:FROM python
---> fa9122485d1d
2/4步:WORKDIR /app
---> 正在使用缓存
---> 9e9708fe1d43
3/4步:COPY . /app/
---> aea9ecf32f55
4/4步:ENTRYPOINT ["python3", "main.py"]
---> 正在运行 864440fa7988 中间容器
正在删除中间容器 864440fa7988
---> d6e31e5606b8
构建映像 arg_py 成功
标记 "arg_py:latest" 成功
Bash

第3步:运行容器

#docker run --name mycontainer arg_py HELLO FROM TUTORIALSPOINT
Bash

示例

文件名或脚本名为:main.py
传递的参数为:HELLO FROM TUTORIALSPOINT
hello from tutorialspoint
Bash

使用Docker环境变量与ENTRYPOINT

Docker运行命令提供了一些非凡的功能,其中之一是环境变量。在这里,我们将使用这些环境变量将数据传递到Docker容器内部的Python脚本中。

第1步:创建Python脚本以访问环境变量

这次创建Python脚本与第一个示例非常相似。我们将导入“os”模块获取环境变量,而不是导入“sys”模块。 创建Python文件并粘贴以下代码。

例子

导入 os

#声明一些用于环境变量的变量
#os.getenv会从容器中获取环境变量。
用户名 = os.getenv("User_Name")
密码 = os.getenv("Pass_Word")

#现在打印被获取的变量。
打印("使用用户运行:%s" % 用户名)
打印("您的密码:%s" % 密码)

#应用一些操作
打印(用户名.upper())
打印(密码.upper())
Bash

将以上文件保存为main.py

第2步:构建Dockerfile

构建Dockerfile以使用此Python代码创建新的映像。这个Dockerfile与我们之前创建的相同,只是main.py中的Python代码已更改。

例子

#docker build -t env_img .
Bash

输出

将构建上下文发送至Docker守护程序3.072kB
步骤1/4:来自PythonFROM
--->fa9122485d1d
步骤2/4WORKDIR/app
--->正在使用缓存
--->9e9708fe1d43
步骤3/4:复制。/app/
--->31f98d53c161
步骤4/4ENTRYPOINT [python3”,“main.py]
--->正在运行bec1681a6842中的5dd89b0c7985
删除中间容器bec1681a6842
--->5dd89b0c7985
成功构建了5dd89b0c7985标记为env_imglatest
Bash

第3步:运行容器

使用Python脚本中提到的环境变量在运行容器时。Docker run有一个“-e”标志可提及任何环境变量,我们可以一次提及多个环境变量。

例子

#docker run -e User_Name="TutorialsPoint" -e Pass_Word="secret" --name env_cont env_img
Bash

输出

使用TutorialsPoint用户运行
您的密码:secret
TUTORIALSPOINT
SECRET
Bash

这是我们如何通过Docker客户端的帮助将命令行参数和环境变量传递给运行在Docker守护程序上的Python容器。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册