首页 > 解决方案 > 在 bats 脚本中检查 docker 日志的输出

问题描述

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

一切都按预期工作,只是我没有看到docker logscommand 的输出。我真的很困惑可能是什么问题。

这是我的 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
}

有人可以帮我看看我哪里出错了。我必须做一些特别的事情才能从docker logsshell 脚本中获取输出。

提前谢谢了。

标签: dockerbats-core

解决方案


推荐阅读