在bats脚本中检查docker日志的输出

在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

我有一个奇怪的问题。我有一个用于测试的bats shell脚本。在脚本中,我构建并镜像,然后运行容器,在测试命令中,我只是运行一个伪Python脚本

一切正常,只是我没有看到
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日志--按照
查看是否有输出?为了确保确实有输出,您是否尝试过将输出重定向到文件?除此之外,我真的想不出还有什么别的。。。代码看起来确实不错。。。