首页 > 解决方案 > Windows Batch 中的正则表达式以自动化 Docker 运行

问题描述

我正在尝试自动化将我的临时 Amazon AWS 密钥作为环境变量发送到使用 Windows 的 Docker 映像的过程。我有一个文件,credentials.txt,其中包含我的 AWS 凭证(3 个 id 始终相同,但字符串值定期更改)。我正在使用 Windows 命令提示符。

输入:(包括末尾的 2 个空行)credentials.txt

[default]
aws_access_key_id     = STR/+ing1
aws_secret_access_key = STR/+ing2
aws_session_token     = STR/+ing3


所需输出:我需要发出以下命令才能运行 Docker 映像(用实际字符串替换字符串):

docker run -e AWS_ACCESS_KEY_ID=STR/+ing1 -e AWS_SECRET_ACCESS_KEY=STR/+ing2 -e AWS_SESSION_TOKEN=STR/+ing3 my-aws-container

我的想法是尝试在credentials.txt上使用正则表达式将其转换为:

SET aws_access_key_id=STR/+ing1
SET aws_secret_access_key=STR/+ing2
SET aws_session_token=STR/+ing3

然后运行:

docker run -e AWS_ACCESS_KEY_ID=%aws_access_key_id% -e AWS_SECRET_ACCESS_KEY=%aws_secret_access_key% -e AWS_SESSION_TOKEN=%aws_session_token% my-aws-container

有人对如何实现这一目标有任何建议吗?

标签: regexwindowsamazon-web-servicesdockerbatch-file

解决方案


我尝试过似乎可行的python 。其他人可能有更好的答案。

我创建了python文件:

docker_run.py

import re
import os

myfile = 'C:/fullpath/credentials'
with open(myfile,'r') as f:
    mystr = f.read()
vals = re.findall('=[\s]*([^\n]+)',mystr)
keys = ['AWS_ACCESS_KEY_ID','AWS_SECRET_ACCESS_KEY','AWS_SESSION_TOKEN']
environment_vars = ''.join([' -e ' + k + '=' + v for k,v in zip(keys,vals)])
cmd = 'docker run'+environment_vars+' my-aws-container'

os.system(cmd)

然后从命令提示符运行:

python docker_run.py

这成功运行docker

(注意:我尝试在最后一行使用 exec() 而不是 os.system(),但得到错误“SyntaxError: invalid syntax”)


推荐阅读