Docker 和 Bitbucket 管道的集成测试

Integration Tests with Docker and Bitbucket pipelines

我想 运行 我的集成测试作为 Bitbucket 管道 CI 的一部分。我的 集成测试 测试了 运行 针对空 MongoDB 数据库的 NodeJS 后端。为了实现这一点,我想创建一个 Docker 图像,Bitbucket 管道可以从 docker 图像存储库中提取该图像。

我的 bitbucket-pipelines.yml 会是这样的:

image: <my image with nodejs and a mongodb linked to it>
pipelines:
  default:
    - step:
        script:
          - npm test

现在我只需要创建一个 docker 图像并正确配置 nodejsmongodb。我可以通过创建以下 docker-compose.yml 文件来构建环境:

version: "2"
services:
  web:
    build: .
    volumes:
      - ./:/app
    ports:
      - "3000:3000"
      - "9090:8080"
    links:
     - mongo
  mongo:
   image: mongo
   ports:
    - "27018:27017"

我的Docker文件:

FROM node:7.9
RUN mkdir /app
WORKDIR /app
COPY package.json /app
RUN npm install
COPY . /app
EXPOSE 3000
CMD ["npm", "run", "dev"]

问题 - 问题

我可以 运行 在本地使用 docker 组合我的环境,但是我如何制作单个图像,而不是使用 docker 组合,这样我就可以公开发布该图像以供使用它在我的 Bitbucket CI 中?我对 docker 还是很陌生,但我已经从文档中了解到,尝试在我的 nodeJS 图像上安装 MongoDB 是一个危险信号。

Bitbucket Pipeline 还没有对 docker compose 的原生支持。

但是您最多可以在 bitbucket 中定义 3 个服务-pipelines.yml。文档位于:https://confluence.atlassian.com/bitbucket/service-containers-for-bitbucket-pipelines-874786688.html