如何使用docker-compose run将日志输出发送至stdout?
在GitLab CI/CD中让
docker compose run输出日志到stdout的方法 核心问题:
docker compose run默认不会将容器的标准输出/错误附加到当前终端,导致GitLab CI/CD中看不到容器日志;而后台执行docker logs --follow &会让流水线因进程无法终止而超时失败。直接解决方案:
给docker compose run添加--attach参数,指定附加标准输出和错误输出,或直接用--attach=all一次性附加所有流:docker compose run --attach=all HelloWorld容器运行时的日志会直接输出到CI的stdout,容器执行完成后命令自动正常退出,不会导致流水线超时。
示例验证:
- Dockerfile内容:
CMD ["echo", "Hello, World"] - 对应的
docker-compose.yml:services: HelloWorld: build: . - 在CI流水线中执行上述带
--attach=all的命令,会直接输出:Hello, World
命令执行完毕后自动退出,流水线正常结束。
- Dockerfile内容:
内容的提问来源于stack exchange,提问作者MSalters
相关产品推荐
相关产品推荐

