docker - 配置 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 并使用它来构建映像,如果这样做,构建时间会增加。
提前致谢!
解决方案
如果您想在管道过程中构建映像,则需要与在计算机中构建映像相同的步骤:
- 建立你的形象
docker build -t $APP_NAME .
- 将其推送到您的仓库(例如 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 客户端。然后推送后,您可以在另一个步骤中使用该图像。您只需要指定该步骤的图像。