编辑:
我花了一天的时间才意识到这一点,但这实际上是一个反图案。作曲家不应运行Docker脚本。
我的解决方案是:
"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""
},
也许可以使用ENV变量使用Docker-Compose?https://docs.docker.com/compose/environment-variables/
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"
},
在Docker Container Bash中打电话给它们。