运行`eb local run`作为bash脚本的后台进程失败,出现各种错误(描述)

我试图写一个脚本:

  • 运行docker-compose up -d编排一些服务(数据库等)
  • 运行eb local run来启动Web容器。
  • 将Web容器连接到由docker-compose创build的dockernetworking

我遇到的问题是与eb local run因为它似乎阻止,但不会作为后台进程工作。 以下是我的脚本示例:

 docker-compose up -d # Run backing services, postgres, redis, amqp, etc. eb local run > ./logs/eb.log 2>&1 & # Run web container with eb # Wait for container to be running spin="-\|/" i=0 until [ "$(docker ps -q --filter expose=8080)" ]; do i=$(( (i+1) %4 )) printf "\r${spin:$i:1}" done ### This section connects the elasticbeanstalk container to the network configured by docker compose EB_DOCKER_CONTAINER_ID=$(docker ps -q --filter expose=8080) DEFAULT_DOCKER_NETWORK_NAME="${${PWD##*/}//[\-\_]/}_default" docker network connect ${DEFAULT_DOCKER_NETWORK_NAME} ${EB_DOCKER_CONTAINER_ID} 

当我运行它打印[2] + 82322 suspended (tty output) eb local run > ./logs/eb.log 2>&1 ,并卡在循环等待Web容器启动。

我也尝试了一些变化,如:

 nohup eb local run & 

结果在[2] + 82322 suspended (tty output) ( eb local run; ) 。 nohup.out文件显示,docker起来构build图像,但不执行uwsgi。

另外如果我运行fg命令,我得到的消息:
unable to setup input stream: unable to set IO streams as raw terminal: interrupted system call
ERROR: None

如果相反,我运行nohup eb local run容器运行,但脚本不会超过nohup eb local run命令进度。 nohup.out文件显示uwsgi已启动*** Starting uWSGI 2.0.15 (64bit) on [Fri Oct 6 04:47:47 2017] *** ,但是web容器未连接到dockernetworking。

如果我运行ps | grep docker ps | grep docker在脚本运行后,我实际上看到底层的docker run命令。 即

docker run -i -t --rm -p 8080:8080 --env KEY=VALUE -v /Users/me/Projects/my_api/.elasticbeanstalk/logs/local/171006_160403886032:/var/app/logs --name a81919b7750b87c5d6b0c85ad6088baef308d5de 06c07d928cea

我调用脚本. ./bin/start.sh . ./bin/start.sh ,有没有人知道我怎么可以从这个脚本运行eb local run ,或者任何适当的指针/技巧将不胜感激。