在Bluemix上部署文件后创建文件

时间:2015-10-23 12:35:04

标签: ibm-cloud devops

我有一个使用IBM devops服务部署到bluemix的应用程序。我使用Cloud Foundry作为部署者类型并从我的SCM存储库输入。

一切正常,我希望在部署后我需要在应用程序的根目录中创建一个名为.env的文件。

在我的部署脚本中,我尝试了所有这些

touch app/.env
touch .env
touch home/vcap/app/.env

但似乎没有任何效果。如何在部署后创建此文件。

2 个答案:

答案 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变量在应用程序内访问这些变量。

Further documentation

答案 1 :(得分:1)

为了完整性,另一种方法是在名为.profile.d的文件夹中创建一个可执行的.sh脚本,该文件夹位于CloudFoundry Bluemix应用程序文件的根目录(如果这是基于Laravel编写器,可能就是你的composer.json所在的位置) 。这将针对应用程序启动的每个应用程序实例之前运行。

希望这有帮助。