我正在尝试编写一个脚本:
library(data.table)
setDT(df1)[, ret_year_start := year[which(retained==1)[1]], .(rleid(retained), urn)]
以编排某些服务(数据库等)docker-compose up -d
以启动Web容器。我遇到的问题是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
,或者任何适当的指针/提示都会受到赞赏。