在作曲家脚本中使用变量

时间:2017-03-05 21:26:03

标签: docker composer-php

修改

我花了一天才意识到这一点,但这实际上是一个反模式。 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\""
  },

2 个答案:

答案 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中调用它们。