运行`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
,或者任何适当的指针/技巧将不胜感激。