我有一个使用IBM devops服务部署到bluemix的应用程序 . 我使用Cloud Foundry作为部署者类型并从我的SCM存储库输入 .
一切正常,我需要在部署后在我的应用程序的根目录中创建一个名为.env的文件 .
在我的部署脚本中,我尝试了所有这些
touch app/.env touch .env touch home/vcap/app/.env
但似乎没有任何效果 . 如何在部署后创建此文件 .
为了完整起见,另一种方法是在名为.profile.d的文件夹中创建一个可执行的.sh脚本,该文件夹位于您的CloudFoundry Bluemix应用程序文件的根目录(如果这是基于Laravel编写器,可能就是您的composer.json所在的位置) . 这将针对应用程序启动运行每个应用程序实例 prior .
希望这可以帮助 .
鉴于您在部署后创建文件,您应该能够从应用程序本身创建它 .
如果你使用的是node.js,这里有一个你可以放在app.js(或server.js)文件顶部的例子:
var fs = require('fs'); fs.writeFile('.env', data, function (err) { if (err) throw err; console.log('Created .env file'); });
------编辑-------
如果.env文件的目的是将环境变量传递给您的应用程序,那么您可以通过多种方式实现此目的 .
Add environment variables to your app from the Bluemix UI
单击您的应用程序以显示应用程序仪表板
单击环境变量(左侧)
单击“用户定义”
单击“添加”
Add environment variables to your app from the CLI
cf set-env APP_NAME ENV_VAR_NAME ENV_VAR_VALUE
Add a user provided service to store your environment variables
您可以使用 cf cups 命令创建自己的Bluemix服务,例如:
cf cups
cf create-user-provided-service SERVICE_INSTANCE -p '{"name":"value","name":"value"}'
然后,您可以使用 cf bind-service 命令将此服务绑定到应用程序:
cf bind-service
cf bind-service APP_NAME SERVICE_INSTANCE [-c PARAMETERS_AS_JSON]
无论您如何创建环境变量,都可以从 process.env.VCAP_SERVICES 变量中在应用程序中访问这些变量 .
process.env.VCAP_SERVICES
Further documentation
2 回答
为了完整起见,另一种方法是在名为.profile.d的文件夹中创建一个可执行的.sh脚本,该文件夹位于您的CloudFoundry Bluemix应用程序文件的根目录(如果这是基于Laravel编写器,可能就是您的composer.json所在的位置) . 这将针对应用程序启动运行每个应用程序实例 prior .
希望这可以帮助 .
鉴于您在部署后创建文件,您应该能够从应用程序本身创建它 .
如果你使用的是node.js,这里有一个你可以放在app.js(或server.js)文件顶部的例子:
------编辑-------
如果.env文件的目的是将环境变量传递给您的应用程序,那么您可以通过多种方式实现此目的 .
Add environment variables to your app from the Bluemix UI
单击您的应用程序以显示应用程序仪表板
单击环境变量(左侧)
单击“用户定义”
单击“添加”
Add environment variables to your app from the CLI
Add a user provided service to store your environment variables
您可以使用
cf cups
命令创建自己的Bluemix服务,例如:然后,您可以使用
cf bind-service
命令将此服务绑定到应用程序:无论您如何创建环境变量,都可以从
process.env.VCAP_SERVICES
变量中在应用程序中访问这些变量 .Further documentation