带有 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 管道的主要内容,如果未能解决你的问题,请参考以下文章

Docker,从 bitbucket 私有仓库中获取

使用 Bitbucket Pipelines 从 docker 实例 SSH 到登台机器

将 Perl Docker 容器部署到 Elastic Beanstalk

Docker 与 BitBucket

在 bitbucket 上使用 git 部署到 Heroku

使用 docker 和 bitbucket 管道的 android 环境