Jul*_*tel 8 bitbucket docker bitbucket-pipelines
我需要的是一种在存储库中构建 Dockerfile 作为映像并将其用作下一步的映像的方法。
我已尝试下面的 Bitbucket Pipeline 配置,但在“构建”步骤中,其缓存中似乎没有图像(在上一步中构建)。
pipelines:
branches:
main:
- step:
name: Docker Image(s)
script:
- docker build -t foo/bar .docker/composer
services:
- docker
caches:
- docker
- step:
name: Build
image: foo/bar
script:
- echo "Hello, World"
- composer --version
services:
- docker
caches:
- docker
Run Code Online (Sandbox Code Playgroud)
我已经尝试了下面 StackOverflow 问题的答案,但该问题的上下文是在下一步中推送图像。这与使用为该步骤本身构建的图像无关。
您当前的流程中存在一些概念性错误。在给您一些可能的解决方案之前,让我先回顾一下这些内容。
Bitbucket Pipelines 使用cache关键字跨多个管道持久保存数据。虽然它也将跨步骤持续存在,但主要用例是在单独的构建中使用数据。缓存需要 7 天才会过期,因此在这 7 天内不会用新数据进行更新。您可以在 Pipelines 主页上手动删除缓存。如果您想在同一管道中跨步骤携带数据,则应该使用关键字artifacts。
docker只要您希望 docker 守护进程可用于您的构建,您就只需使用该服务。最常见的是当您需要docker在脚本中使用命令时。在第二步中,您不需要这个。所以不需要这个docker服务。
组合这些步骤,并composer使用docker run命令在创建的映像中运行。
pipelines:
branches:
main:
- step:
name: Docker image and build
script:
- docker build -t foo/bar .docker/composer
# Replace <destination> with the working directory of the foo/bar image.
- docker run -v $BITBUCKET_CLONE_DIR:<destination> foo/bar composer --version
services:
- docker
Run Code Online (Sandbox Code Playgroud)
此示例保留了两步方法。在这种情况下,您将把foo/bar映像推送到 Dockerhub 中的公共存储库。然后管道会将其拉出以在后续步骤中使用。
pipelines:
branches:
main:
- step:
name: Docker Image(s)
script:
- docker build -t foo/bar .docker/composer
- docker login -u $DOCKERHUB_USER -p $DOCKERHUB_PASSWORD
- docker push foo/bar
services:
- docker
- step:
name: Build
image: foo/bar
script:
- echo "Hello, World. I'm running insider of the previously pushed foo/bar container"
- composer --version
Run Code Online (Sandbox Code Playgroud)
如果您想使用私有存储库,则可以将第二步替换为:
...
- step:
name: Build
image:
name: foo/bar
username: $DOCKERHUB_USERNAME
password: $DOCKERHUB_PASSWORD
email $DOCKERHUB_EMAIL
script:
- echo "Hello, World. I'm running insider of the previously pushed foo/bar container"
- composer --version
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2972 次 |
| 最近记录: |