使用Docker Compose v1.6.0+,现在有一个新的/版本 2 文件语法docker-compose.yml。这些更改包括一个名为 的单独顶级密钥volumes。这允许在一个地方“集中”卷定义。
我想要做的是在那里命名卷,并在我的本地主机磁盘上有一个单一的卷引用多个路径。下面是一个例子,抛出一个以 aTraceback结尾的异常
AttributeError: 'list' object has no attribute 'items'
Run Code Online (Sandbox Code Playgroud)
示例docker-compose.yml:
version: '2'
services:
db:
image: postgres
volumes:
- database:/var/lib/postgres/data
php:
image: php-fpm:5.6
volumes:
- phpconf:/etc/php/conf.d
namedvolume:
container_name: namedvolume
build: ./Docker/Testvolume
volumes:
- ./Docker/Testvolume/shareme
volumes:
database:
- ./Docker/Postgres/db:ro
- ./Docker/Postgres/ini
phpconf:
- ./Docker/PHP-FPM/conf
singledir: ./Docker/foo
completemap: ./Docker/bar:/etc/service/conf.d
- namedvolume:/etc/service/conf.d # < this was a separate attempt w/o the other keys
… ?
Run Code Online (Sandbox Code Playgroud)
到目前为止,我通读了所有Docker …
在我目前正在处理的模块中,我得到了大量需要设置的配置选项,具有默认值......并且应该被分割成更短的模板文件,否则它将成为滚动的噩梦。
推荐的方法是使用一些第三方模块。没有内置的方法吗?
我有一个非常简单的 Puppet(子)模块,它应该使用 Git 从远程位置克隆存储库:
class wppuppet::git(
$location = '/var/www/wp'
) {
file { $location:
ensure => 'directory',
mode => '0755',
}
exec { 'git-wp':
command => 'git clone https://github.com/WordPress/WordPress ${location}',
require => Package['git'],
}
Package['git']
-> File[ $location ]
-> Exec['git-wp']
}
Run Code Online (Sandbox Code Playgroud)
由于某种原因,它经常失败并出现以下错误:
Error: git clone https://github.com/WordPress/WordPress ${location} returned 128 instead of one of [0]
Error: /Stage[main]/Wppuppet::Git/Exec[git-wp]/returns: change from notrun to 0 failed:
git clone https://github.com/WordPress/WordPress ${location} returned 128 instead one of [0]
Run Code Online (Sandbox Code Playgroud)
我用${location}和尝试过$location,但结果保持不变。
为了测试,我设置了一个非常简单的Vagrant文件。这只是为了测试如何使用Ansible。可悲的是,我被困在第 2 步,期间出现以下错误vagrant up --provision(我可以重复reload):
'ansible-playbook'在 PATH 变量中找不到 Vagrant 尝试运行的可执行文件。这是一个错误。请验证此软件已安装并在路径上。
由于Ubuntu 14 “Trusty” 64bit box 没有安装Ansible,我添加了一个快速的 shell 脚本,在实际的Ansible playbook之前作为配置器运行。这是Vagrantfile
Vagrant.require_version ">= 1.7.0"
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/trusty64"
config.ssh.insert_key = false
# Synced folders
config.vm.synced_folder "./public", "/var/www",
disabled: false
# Install Ansible
config.vm.provision :shell,
path: "provisioners/shell/install-ansible.sh"
# Run Ansible Playbooks
config.vm.provision "ansible" do |ansible|
ansible.verbose = "vvv"
ansible.playbook = "provisioners/ansible/playbook.yml"
end
end …Run Code Online (Sandbox Code Playgroud)