我有一个使用IBM devops服务部署到bluemix的应用程序。我使用Cloud Foundry作为部署者类型并从我的SCM存储库输入。
一切正常,我希望在部署后我需要在应用程序的根目录中创建一个名为.env的文件。
在我的部署脚本中,我尝试了所有这些
touch app/.env
touch .env
touch home/vcap/app/.env
但似乎没有任何效果。如何在部署后创建此文件。
答案 0 :(得分:1)
鉴于您在部署后创建文件,您应该能够从应用程序本身创建它。
如果您使用的是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文件的目的是将环境变量传递给您的应用程序,那么您可以通过多种方式实现此目的。
从Bluemix UI
向您的应用添加环境变量从CLI向您的应用添加环境变量
cf set-env APP_NAME ENV_VAR_NAME ENV_VAR_VALUE
添加用户提供的服务来存储您的环境变量
您可以使用cf cups
命令创建自己的Bluemix服务,例如:
cf create-user-provided-service SERVICE_INSTANCE -p '{"name":"value","name":"value"}'
然后,您可以使用cf bind-service
命令将此服务绑定到应用程序:
cf bind-service APP_NAME SERVICE_INSTANCE [-c PARAMETERS_AS_JSON]
无论您如何创建环境变量,都可以从process.env.VCAP_SERVICES
变量在应用程序内访问这些变量。
答案 1 :(得分:1)
为了完整性,另一种方法是在名为.profile.d的文件夹中创建一个可执行的.sh脚本,该文件夹位于CloudFoundry Bluemix应用程序文件的根目录(如果这是基于Laravel编写器,可能就是你的composer.json所在的位置) 。这将针对应用程序启动的每个应用程序实例之前运行。
希望这有帮助。