在composer php脚本中使用variables

编辑:

我花了一天时间才意识到这一点,但实际上这是一个反模式。 composer php不应该运行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" }, 

是否有可能将variables传递给作曲脚本?

我有这个仓库中运行的仓库。 当我需要更新灯具或数据库模式或几乎所有我需要运行docker exec我想这至less是半自动的。 所以我可以input类似于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\"" }, 

我想在variables中传递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\"" }, 

也许使用docker-compose envvariables? 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容器bash中调用它们。