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

时间:2017-10-06 05:19:21

标签: linux bash docker elastic-beanstalk

我正在尝试编写一个脚本:

  • 运行library(data.table) setDT(df1)[, ret_year_start := year[which(retained==1)[1]], .(rleid(retained), urn)] 以编排某些服务(数据库等)
  • 运行docker-compose up -d以启动Web容器。
  • 将Web容器连接到docker-compose创建的docker网络

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

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} 并卡在循环中,等待Web容器启动。

我还尝试了一些变体,例如:

[2]  + 82322 suspended (tty output)  eb local run > ./logs/eb.log 2>&1

nohup eb local run & 中的结果。 nohup.out文件显示docker已经开始构建映像,但是没有执行uwsgi。

此外,如果我运行[2] + 82322 suspended (tty output) ( eb local run; )命令,我会收到消息:
fg
unable to setup input stream: unable to set IO streams as raw terminal: interrupted system call

如果我运行ERROR: None,则运行容器,但脚本不会超过nohup eb local run命令。 nohup.out文件显示uwsgi已启动nohup eb local run,但Web容器未连接到docker网络。

如果我在脚本运行后运行*** Starting uWSGI 2.0.15 (64bit) on [Fri Oct 6 04:47:47 2017] ***,我实际上会看到底层的docker run命令。即。

ps | grep docker

我将脚本调用为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,或者任何适当的指针/提示都会受到赞赏。

0 个答案:

没有答案