在 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 配置中的 AllowOverrideDocumentRoot 变量的 sed 命令。

当 packer 运行这个脚本时,它工作正常,我得到了一个积极的 sed 输出,所以 sed 似乎工作正常。但在 docker 图像中,文件未更改。 复制 file 配置器中的文件工作正常。

我做错了什么?

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

"sed -i <expression> <file>"