带有 docker 容器的 bitbucket 管道
Posted
技术标签:
【中文标题】带有 docker 容器的 bitbucket 管道【英文标题】:bitbucket pipeline with docker container 【发布时间】:2019-07-09 08:42:19 【问题描述】:我有一个正在使用 maven 构建的项目。测试用例使用测试容器来启动一个 MS-SQLserver 实例。管道目前正在失败。
我使用的管道图像的原因是:
image: maven:3.6.0
没有 docker 和 sqlserver 镜像。
我的问题是:
我是否使用 java + maven + docker + sqlserver 创建自己的映像并在管道文件中使用它
或
只是在管道文件中有命令来安装我需要的东西吗?我认为这将是 WRT 构建时间较慢的选项
启用 testcontainers ryuk 的 bitbucket 管道失败示例:
2019-09-09 07:21:22.719 WARN 416 --- [containers-ryuk] o.testcontainers.utility.ResourceReaper : Can not connect to Ryuk at localhost:32768
java.net.SocketException: Broken pipe (Write failed)
at java.net.SocketOutputStream.socketWrite0(Native Method) ~[na:1.8.0_222]
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:111) ~[na:1.8.0_222]
at java.net.SocketOutputStream.write(SocketOutputStream.java:134) ~[na:1.8.0_222]
at org.testcontainers.utility.ResourceReaper$FilterRegistry.register(ResourceReaper.java:380) ~[testcontainers-1.11.2.jar:na]
【问题讨论】:
【参考方案1】:您可以通过禁用Ryuk 让TestContainers 与您的Bitbucket 管道 一起工作。您还需要在脚本中添加docker
作为服务,如下所示:
image: atlassian/default-image:2
pipelines:
default:
- step:
script:
- export TESTCONTAINERS_RYUK_DISABLED=true
# Your commands should come after setting the environment variable above
# ...
# ...
services:
- docker
definitions:
services:
docker:
memory: 2048
here 提供了有关此的详细信息。
【讨论】:
【参考方案2】:您需要将“docker”服务添加到您的管道和disable Ryuk。
【讨论】:
以上是关于带有 docker 容器的 bitbucket 管道的主要内容,如果未能解决你的问题,请参考以下文章
使用 Bitbucket Pipelines 从 docker 实例 SSH 到登台机器
将 Perl Docker 容器部署到 Elastic Beanstalk