在bats脚本中检查docker日志的输出
我有一个奇怪的问题。我有一个用于测试的bats shell脚本。在脚本中,我构建并镜像,然后运行容器,在测试命令中,我只是运行一个伪Python脚本 一切正常,只是我没有看到在bats脚本中检查docker日志的输出,docker,bats-core,Docker,Bats Core,我有一个奇怪的问题。我有一个用于测试的bats shell脚本。在脚本中,我构建并镜像,然后运行容器,在测试命令中,我只是运行一个伪Python脚本 一切正常,只是我没有看到docker logs命令的输出。我真的很困惑到底是什么问题 这是我的bats文件内容: #!/usr/bin/env bats setup() { echo "-----STARTING THE SETUP PROCESS-----" >&3 DOCKER_IMAGE=${DOCKER_IMAGE
docker logs
命令的输出。我真的很困惑到底是什么问题
这是我的bats文件内容:
#!/usr/bin/env bats
setup() {
echo "-----STARTING THE SETUP PROCESS-----" >&3
DOCKER_IMAGE=${DOCKER_IMAGE:="bats-test"}
BATS_ENV_FILE=${BATS_ENV_FILE:="bats-env.env"}
CONTAINER_NAME=${CONTAINER_NAME:="bats-test-container"}
echo "Building image..." >&3
docker build --build-arg PIP_EXTRA_INDEX_URL=$PIP_EXTRA_INDEX_URL -t ${DOCKER_IMAGE}:bats-test . >&3
echo "Running docker container..." >&3
docker container run --rm -itd --name ${CONTAINER_NAME} -p 8000:8000 --env-file ${BATS_ENV_FILE} bats-test:bats-test >&3
docker ps >&3
echo "Checking docker container logs..." >&3
docker logs ${CONTAINER_NAME} 2>&1 >&3
}
@test "Test that docker service responds to requests" {
python test.py >&3
status=`echo $?`
echo "Status: $status" >&3
[ "$status" -eq 0 ]
}
teardown() {
echo "-----STARTING THE TEARDOWN PROCESS-----" >&3
echo "Stopping docker container ..." >&3
docker container stop $(docker container ls -aq) >&3
echo "Remove the unused image..." >&3
docker rmi bats-test:bats-test >&3
if test -f "${BATS_ENV_FILE}"; then
echo "${BATS_ENV_FILE} exists ... removing it." >&3
rm ${BATS_ENV_FILE}
fi
}
有人能帮我一下我哪里出了问题吗。要从shell脚本中获取docker日志
输出,我需要做一些特殊的事情
非常感谢。您在
docker logs${CONTAINER\u NAME}2>&1>&3
中使用的重定向对我来说似乎没问题。在命令运行时,日志中是否可能没有任何内容?您是否尝试过使用docker日志--按照查看是否有输出?为了确保确实有输出,您是否尝试过将输出重定向到文件?除此之外,我真的想不出还有什么别的。。。代码看起来确实不错…您在docker logs${CONTAINER\u NAME}2>&1>&3
中使用的重定向在我看来不错。在命令运行时,日志中是否可能没有任何内容?您是否尝试过使用docker日志--按照查看是否有输出?为了确保确实有输出,您是否尝试过将输出重定向到文件?除此之外,我真的想不出还有什么别的。。。代码看起来确实不错。。。