regex - 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
有人对如何实现这一目标有任何建议吗?
解决方案
我尝试过似乎可行的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”)
推荐阅读
- java - 我的 Spring Boot 项目有映射异常
- javascript - 在 React 中将数组转换为组件
- html - 在悬停时显示包含整个文本的吐司
- python - 使用Openpyxl将IF公式插入Excel后出现“@”符号
- python - Django 外键 JWT 身份验证
- python - 创建具有范围的列表并将此列表的类型更改为字符串
- mysql - 您的 SQL 语法错误;ON DUPLICATE KEY UPDATE
- javascript - 在二级页面中使用带有按钮的 JS 更改标题
- c# - 从 WordprocessingDocument.Open 方法生成的重复数字签名字段
- javascript - Leaflet.js 中的 HERE 交通事件集成