docker - 在 bats 脚本中检查 docker 日志的输出
问题描述
我有一个奇怪的问题。我有一个用于测试的 bats shell 脚本。在我构建和映像的脚本中,然后运行容器,在我的测试命令中,我只是运行一个虚拟 Python 脚本。
一切都按预期工作,只是我没有看到docker logs
command 的输出。我真的很困惑可能是什么问题。
这是我的 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 logs
shell 脚本中获取输出。
提前谢谢了。
解决方案
推荐阅读
- visual-studio-code - 是否可以在 VS Code 的窗格之间移动单个打开的文件?
- express - 即使使用 express-validator 的 1 个元素,验证查询参数中数组的所有元素的正确方法是什么?
- python - 使节点不影响图形布局
- c++ - 有没有办法构造一个 constexpr 函数来获取双精度的位表示?
- python - 有什么方法可以知道使用 python selenium 将广告上传到网页的频率?
- javascript - 通过将 POST 请求中的 HTML 表单发送到私有 API 来获取 JWT
- python-3.x - 如何一次从 3 个或更多字典中获取一个随机密钥
- react-native - 右侧的 React Native 导航标题按钮无法正常工作
- reactjs - 将本机函数作为平面列表项中的道具反应
- python - 如何在 Python 3 中从网站/url 获取数据