在Packer脚本中更改文件(使用sed)会使文件保持不变

时间:2017-10-28 11:12:24

标签: bash docker sed packer

目前我正在研究使用packer和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配置中的AllowOverrideDocumentRoot变量的sed命令。

当打包器运行此脚本时它运行正常,我得到一个积极的sed输出,所以sed似乎工作正常。但是在docker镜像中,文件没有变化。 复制file配置文件中的文件工作正常。

我做错了什么?

1 个答案:

答案 0 :(得分:3)

您的sed命令中似乎缺少-i(或--in-place)标记。试试:

"sed -i <expression> <file>"