首页 > 解决方案 > 配置 bitbucket-pipeline.yml 以在运行管道时使用存储库中的 DockerFile 来构建映像

问题描述

我是在 bitbucket 上创建管道以在合并后自动构建特定分支的新手。该项目是用 C++ 编写的,具有以下结构:

PROJECT FOLDER
    - .devcontainer/
        - devcontainer.json
    - bin/
    - doc/
    - lib/
    - src/
        - CMakeLists.txt
        - ...
    - CMakeLists.txt
    - clean.sh
    - compile.sh
    - configure.sh
    - DockerFile
    - bitbucket-pipelines.yml

我们创建了一个 DockerFile,其中包含构建项目所需的所有设置。有什么方法可以将 bitbucket-pipeline.yml 上的 docker 映像引用到存储库中的 DockerFile?

我已经能够在我的 docker hub 上上传 docker 映像,并通过定义将其与我的凭据一起使用:

image:
  name: <dockerhubname>/<dockername>
  username: $DOCKER_HUB_USERNAME
  password: $DOCKER_HUB_PASSWORD
  email: $DOCKER_HUB_EMAIL

但我不确定如何做到这一点,bitbucket 从存储库中获取 DockerFile 并使用它来构建映像,如果这样做,构建时间会增加。

提前致谢!

标签: dockerbitbucketbitbucket-pipelines

解决方案


如果您想在管道过程中构建映像,则需要与在计算机中构建映像相同的步骤:

  1. 建立你的形象docker build -t $APP_NAME .
  2. 将其推送到您的仓库(例如 docker hub)docker push $APP_NAME:$VERSION

你可以这样做:

steps:
  - step: &build
    name: Build Docker Image
    services:
      - docker
    script:
      - docker build -t $APP_NAME .
      - docker push $APP_NAME:$VERSION

认为管道中的每一步都在 docker 容器中运行,这使您可以做任何您想做的事情。docker 服务允许您使用开箱即用的 docker 客户端。然后推送后,您可以在另一个步骤中使用该图像。您只需要指定该步骤的图像。


推荐阅读