【发布时间】:2020-03-14 01:05:25
【问题描述】:
我在尝试设置 AWS Codepipline 时遇到了问题。我的 ApplicationStart 脚本调用以启动在端口 60900 上侦听的 express 服务器,但是因为 express.listen() 在侦听 ApplicationStart 脚本超时时保持命令行,因此我的部署失败。
我已经尝试将它移动到后台进程,并在启动服务器的命令末尾使用 &,但我仍然在 ApplicationStart 挂钩处收到错误。
当我手动运行我的 start_server.sh 脚本时,它几乎会立即启动服务器并让我重新控制命令行。
appspec.yml
version: 0.0
os: linux
files:
- source: /
destination: /var/www/mbmbam.app/
hooks:
BeforeInstall:
- location: scripts/stop_server.sh
timeout: 300
runas: root
- location: scripts/remove_previous.sh
timeout: 300
runas: root
AfterInstall:
- location: scripts/change_permissions.sh
timeout: 300
runas: root
- location: scripts/install_app.sh
timeout: 300
runas: root
- location: scripts/install_db.sh
timeout: 300
runas: root
ApplicationStart:
- location: scripts/start_server.sh
timeout: 300
runas: ubuntu
脚本/start_server.sh
#!/usr/bin/env bash
NODE_ENV=production npm start --prefix /var/www/mbmbam.app/app
分配给 npm start 命令的脚本
app/start_app.sh
#!/bin/sh
if [ "$NODE_ENV" = "production" ]; then
node server.js &
else
nodemon --ignore './sessions' server.js;
fi
AWS Codedeploy 错误
LifecycleEvent - ApplicationStart
Script - scripts/start_server.sh
[stdout]
[stdout]> mbmbam-search-app@1.0.0 start /var/www/mbmbam.app/app
[stdout]> ./start_app.sh
[stdout]
任何帮助将不胜感激。我已经坚持了一天左右。
【问题讨论】:
标签: node.js bash amazon-web-services aws-code-deploy aws-codepipeline