在 Packer 脚本中更改文件(使用 sed)会使文件保持不变
Changing files (using sed) in Packer script leaves files unchanged
目前我正在研究使用加壳器和 docker 构建构建管道。
这是我的 packer.json:
{
"builders": [{
"type": "docker",
"image": "php:7.0-apache",
"commit": true
}],
"provisioners": [
{
"type": "file",
"source": "./",
"destination": "/var/www/html/"
},
{
"type": "shell",
"inline": [
"chown -R www-data:www-data /var/www/html",
"sed '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride all/' /etc/apache2/apache2.conf",
"sed '/<VirtualHost/,/<\/VirtualHost>/ s/DocumentRoot \/var\/www\/html/DocumentRoot \/var\/www\/html\/web/' /etc/apache2/sites-enabled/000-default.conf"
]
}
]
}
provisioners
部分中的 Shell 脚本包含一些用于更改 apache 配置中的 AllowOverride
和 DocumentRoot
变量的 sed 命令。
当 packer 运行这个脚本时,它工作正常,我得到了一个积极的 sed 输出,所以 sed 似乎工作正常。但在 docker 图像中,文件未更改。
复制 file
配置器中的文件工作正常。
我做错了什么?
您的 sed 命令中似乎缺少 -i
(或 --in-place
)标志。尝试:
"sed -i <expression> <file>"
目前我正在研究使用加壳器和 docker 构建构建管道。 这是我的 packer.json:
{
"builders": [{
"type": "docker",
"image": "php:7.0-apache",
"commit": true
}],
"provisioners": [
{
"type": "file",
"source": "./",
"destination": "/var/www/html/"
},
{
"type": "shell",
"inline": [
"chown -R www-data:www-data /var/www/html",
"sed '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride all/' /etc/apache2/apache2.conf",
"sed '/<VirtualHost/,/<\/VirtualHost>/ s/DocumentRoot \/var\/www\/html/DocumentRoot \/var\/www\/html\/web/' /etc/apache2/sites-enabled/000-default.conf"
]
}
]
}
provisioners
部分中的 Shell 脚本包含一些用于更改 apache 配置中的 AllowOverride
和 DocumentRoot
变量的 sed 命令。
当 packer 运行这个脚本时,它工作正常,我得到了一个积极的 sed 输出,所以 sed 似乎工作正常。但在 docker 图像中,文件未更改。
复制 file
配置器中的文件工作正常。
我做错了什么?
您的 sed 命令中似乎缺少 -i
(或 --in-place
)标志。尝试:
"sed -i <expression> <file>"