2017-10-28 16 views
0

현재 packer와 docker를 사용하여 빌드 파이프 라인을 빌드합니다. provisioners 섹션은 아파치 설정 내부 AllowOverrideDocumentRoot 변수를 변경하기위한 몇 가지 나오지 명령이 포함되어 내부Packer 스크립트에서 파일 (sed 사용)을 변경하면 파일이 변경되지 않습니다.

{ 
    "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" 
     ] 
    } 
    ] 
} 

쉘 스크립트 : 이 내 packer.json입니다.

패커가이 스크립트를 실행하면 모든 작업이 원활 해지고 긍정적 인 sed 출력을 얻게되므로 sed가 정상적으로 작동하는 것 같습니다. 그러나 docker 이미지에서 파일은 변경되지 않습니다. file 제공자의 파일을 복사하는 것이 좋습니다.

내가 뭘 잘못하고 있니?

+0

같은 결과를 게시 하시겠습니까? – RavinderSingh13

답변

2

sed 명령에 -i (또는 --in-place) 플래그가 누락 된 것 같습니다. 사용해보기 :

"sed -i <expression> <file>"