我怎样才能最好地表明有多个使用Dockerfile?构建的docker镜像的作者/维护者?如果我包含多个单独的MAINTAINER命令,则只有最后一个命令才会生效.
MAINTAINER Me Myself "myself@example.com"
MAINTAINER My Colleague "mycolleague@example.com"
Run Code Online (Sandbox Code Playgroud)
只mycolleague显示在输出中docker inspect.
我应该在MAINTAINER一行中使用逗号分隔列表吗?是想为列举两个维护打了水漂,我应该只是armwrestle我的同事看到其电子邮件我们把文件?
在 AWS IAM 中,有没有办法通过脚本或 Web 控制台来查找哪些现有策略包含给定操作?
例如,我希望允许角色myRole访问我的所有 EC2 实例上的DescribeTags操作。我知道我可以使用适当的规则创建自己的策略,但如果存在这样的情况,我想使用现有的亚马逊策略。
我有一个用于创建一些EC2实例的剧本,然后用它们做一些事情.相关部分大致如下:
- name: create ec2 instances
ec2:
id: '{{ item.name }}'
instance_type: '{{ item.type }}'
register: ec2
with_items: '{{ my_instance_defs }}'
- name: wait for SSH
wait_for:
host: '{{ item.instances[0].private_ip }}'
port: 22
with_items: '{{ ec2.results }}'
Run Code Online (Sandbox Code Playgroud)
这可以按预期工作,但我对item.instances[0].private_ip表达式并不特别满意,部分原因是它在播放摘要中显示了非常大的对象.我希望这with_items部分只是一个IP地址数组,而不是一个包含对象数组的对象数组.在Python中,我会做类似的事情:
ips = [r['instances'][0]['private_ip'] for r in ec2['results']]
Run Code Online (Sandbox Code Playgroud)
然后我将with_items: '{{ ips }}'在第二个任务中使用.
有没有办法在播放的YAML中使用J2过滤器做同样的事情?似乎http://docs.ansible.com/ansible/playbooks_filters.html#extracting-values-from-containers可能会有所帮助,但我认为这预示着我有一系列键/索引/无论如何.
我想使用 Docker 容器来使用本地文件运行实用程序(特别是 Terraform)。为了快速迭代代码(例如my_stuff.tf),我想绑定挂载我的工作目录。然而,我想考虑一些相对稳定和静态的东西,比如插件。基本上我希望通过三种方式来处理事情:
.terraform/是稳定的东西,应该存在于容器中,而不是我的主机目录中,但即使在安装后也需要保留。my_stuff.tf存在于容器中(因为init需要它)和主机目录中(因为我想编辑它)。我希望我的主机目录版本覆盖容器版本。terraform.tfstate开始时可能不存在于任何一个地方,但会在运行期间生成。我希望它一存在就保留在我的主机目录中。(我猜是第四类,就像README.md我不关心它是否存在一样)
就我而言,TF 期望.terraform/配置插件的位置和terraform.tfstate(我想通过绑定安装捕获的输出之一)位于同一目录中,因此我不能仅对容器内部内容和绑定使用不同的目录-安装的东西。
# Dockerfile
FROM plugin_source AS plugins
FROM terraform_base
COPY --from=plugins terraform-provider-X /bin/
COPY my_stuff.tf /app/
WORKDIR /app
RUN /bin/terraform init
Run Code Online (Sandbox Code Playgroud)
我的运行命令:
docker run --rm -i -t --mount source=$PWD,target=/app,type=bind my_terraform <some-tf-command>
Run Code Online (Sandbox Code Playgroud)
是否有一种灵活的方法可以使绑定安装的行为与命名卷在第一次初始化时的行为相同,如https://docs.docker.com/storage/bind-mounts/#mount-into-a-non-empty-directory-中所述在集装箱上?目前,似乎我可能必须编写一个小入口点脚本,将稳定的内容符号链接到我的工作目录中。
我有一些我想要处理的SQL文件sed并连接成一个文件.使用单个GNU Make配方是否有一种灵巧的方法可以做到这一点?
如果我在编写Makefile时知道文件集,我可以编写一个多行配方.
combined.sql: main.sql table1.sql table2.sql
sed -e 's/latin1/utf8/' main.sql > $@
sed -e 's/latin1/utf8/' table1.sql >> $@
sed -e 's/latin1/utf8/' table2.sql >> $@
Run Code Online (Sandbox Code Playgroud)
这似乎过于重复,如果我有一个动态生成的输入文件列表,也将无法工作.我怎么能以最小冗余的方式很好地做到这一点,可以扩展到任意数量的输入文件?
我在理解在Python中使用"except"语句的方法时遇到了一些麻烦.我现在是一个可怕的程序员,所以我提前道歉.
这是我试图运行的小代码:
def mathWorks():
print " Answer the following: 5 + x = 10"
x = int(raw_input("Please type your answer: "))
if x == 5:
print "You are correct!"
else:
print "You are incorrect!"
break
except ValueError:
print "That is not an integer!"
mathWorks()
Run Code Online (Sandbox Code Playgroud)
我认为我想要完成的是非常自我解释.不幸的是,我在这段代码中得到了"except"语句的"无效语法".
我在这里做错了什么?