我尝试在bitbucket-pipelines.yml中直接使用此容器,它是
docker run -it -p 3000:3000 -p 6379:6379 -p 8983:8983 my_dockerhub/image
./start_services.sh
bundle exec rspec
# everything passes
我在
bundle exec rspec
步骤中收到以下错误image:
name: my_dockerhub/image
username: $DOCKER_HUB_USERNAME
password: $DOCKER_HUB_PASSWORD
email: $DOCKER_HUB_EMAIL
# bind ports here somehow?
pipelines:
branches:
'{master, develop, bitbucket_pipelines}':
- step:
name: Test
script:
- ./start_services.sh
- sleep 30
- bundle exec rspec
我尝试直接在bitbucket管道内运行docker容器
# Errno::ECONNREFUSED:
# Connection refused - connect(2) for "127.0.0.1" port 8983
但是该步骤在
docker run
步骤冻结。我认为这是因为我使用了-t标志,所以该命令不会退出。我本以为可以不用运行它就可以使用
docker exec
将命令发送到容器,但是如何检查测试是否通过?#1 楼
尝试使用-d detached
标志运行docker run -td -p 3000:3000 -p 6379:6379 -p 8983:8983 my_dockerhub/image
# here ^
当用于运行容器的根进程退出时,以分离模式启动的容器退出。这将防止该步骤在
docker run
阶段冻结。Docker docs -d标志
评论
谢谢,差不多了! Bitbucket管道不支持tty,因此我需要标准输入打开的分离模式。最终使它工作的是docker run -id -p 3000:3000 -p 6379:6379 -p 8983:8983 -v $ PWD:$ work_dir $ my_image
–con--
18年5月15日在9:36
评论
-t以防止容器退出?您在本地运行吗?是的,它在本地运行良好。我在第二个示例中使用了-t标志,但是当我运行docker run -t -p 3000:3000 -p 6379:6379 -p 8983:8983 my_dockerhub / image
时,管道冻结
-t,--tty分配伪TTY