修改
我花了一天才意识到这一点,但这实际上是一个反模式。 Composer不应该运行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\""
},
答案 0 :(得分:1)
也许使用docker-compose和env变量? https://docs.docker.com/compose/environment-variables/
答案 1 :(得分: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"
},
在docker container bash中调用它们。