2017-03-05 37 views
0

編輯:在作曲家腳本中使用的變量

花了我一天的時間去實現它,但其實這是一個反模式。作曲家不應該運行碼頭腳本。

我的解決辦法是這樣的:

"scripts": { 
    "php bin/console/doctrine.php orm:schema-tool:create", 
    "php bin/console/doctrine.php orm:schema-tool:update --force", 
    "php bin/console/fixtures.php" 
    }, 

---

是否有可能將變量傳遞給作曲家腳本?

我有這個倉庫在docker中運行。當我需要更新燈具或數據庫模式或幾乎所有我需要運行docker exec我想至少半自動。這樣我可以輸入類似composer run refresh_app之類的東西,並且所有需要完成的事情都會完成。

有了這樣的腳本:

"scripts": { 
    "db:create": "docker exec -i my_container_name bash -c \"cd /www; php bin/console/doctrine.php orm:schema-tool:create\"", 
    "db:update": "docker exec -i my_container_name bash -c \"cd /www; php bin/console/doctrine.php orm:schema-tool:update --force\"", 
    "db:fixtures": "docker exec -i my_container_name bash -c \"cd /www; php bin/console/fixtures.php\"" 
    }, 

我想通過在變量my_container_name。可能做這樣的事情:

"scripts": { 
    "db:create": "docker exec -i $CONTAINER_ID bash -c \"cd /www; php bin/console/doctrine.php orm:schema-tool:create\"", 
    "db:update": "docker exec -i $CONTAINER_ID bash -c \"cd /www; php bin/console/doctrine.php orm:schema-tool:update --force\"", 
    "db:fixtures": "docker exec -i $CONTAINER_ID bash -c \"cd /www; php bin/console/fixtures.php\"" 
    }, 

回答

1

也許使用docker-compose與env變量? https://docs.docker.com/compose/environment-variables/

+0

謝謝你的鏈接。但它並沒有解決我的問題。我想讓docker在後臺運行,並使用composer/npm腳本與它進行通信。它工作得很好,但是對於我的圖像的多個實例,用戶需要手動輸入命令。 – Michal

0

在composer.json有這些腳本:

"scripts": { 
    "php bin/console/doctrine.php orm:schema-tool:create", 
    "php bin/console/doctrine.php orm:schema-tool:update --force", 
    "php bin/console/fixtures.php" 
    }, 

打電話給他們泊塢窗容器內的bash。