使用 Concourse 的 docker 资源获取要在 docker 撰写中使用的容器
Use Concourse's docker resource to fetch containers to be used in a docker compose
是否可以使用 concourse 的 docker 资源来获取要在 docker 组合任务中使用的容器?目前,我只是从我的私人 docker 注册表中获取用于我的集成测试的容器,但是这样做 connections/resources 不会出现在大厅 UI 中。有什么想法吗?
这是我目前的任务:
---
platform: linux
inputs:
- name: devops-repo
- name:client-repo
params:
RUNNER_IMG:
CLIENT_IMG:
SERVER_IMG:
run:
path: sh
args:
- -exc
- |
# "E2E testing:"
- |
# Export map the parameters to the dockerfile env.
export docker-registry-protractor=${RUNNER_IMG}
export docker-registry-client-dist=${CLIENT_IMG}
export docker-registry-server-dist=${SERVER_IMG}
export HOME=/protractor
# Move to the Protractor test project folder
mkdir $HOME
# Get the docker compose file:
cp devops-repo/my-pipeline/templates/e2e/docker-compose.yml $HOME/docker-compose.yml
# Get the tests:
cp client-repo/test/e2e/** $HOME
cd $HOME
# https://github.com/concourse/concourse/issues/324
# Spin up the stack as described in docker-compose:
docker daemon &
docker-compose up
Dockerfile 使用在管道的前一步构建并上传到私有 docker 注册表的容器。
This repo 很好地介绍了如何 运行 docker 在大厅的 docker 中撰写 - 你最终做的是使用 docker 预装 docker compose 的图像,然后加载其他图像。使用 concourse 预取这些图像,然后在本地缓存它们确实有助于提高性能。
一个技巧是将 docker compose 文件放在获取的代码存储库中实际上更容易,而不是放在 concourse 配置中。
缩略语 yml:
- name: integration
plan:
- aggregate:
- get: code-from-git-resource
params: {depth: 1}
passed: [unit-tests]
trigger: true
- get: redis-docker-image
params: {save: true}
- get: busybox-docker-image
params: {save: true}
- task: Run integration tests
privileged: true
config:
platform: linux
image_resource:
type: docker-image
source:
repository: amidos/dcind
inputs:
- name: code-from-git-resource
- name: redis-docker-image
- name: busybox-docker-image
run:
path: sh
args:
- -exc
- |
source /docker-lib.sh
start_docker
# Strictly speaking, preloading of images is not required.
# However you might want to do it for a couple of reasons:
# - If the image is from a private repository, it is much easier to let concourse pull it,
# and then pass it through to the task.
# - When the image is passed to the task, Concourse can often get the image from its cache.
docker load -i redis-docker-image/image
docker tag "$(cat redis-docker-image/image-id)" "$(cat redis-docker-image/repository):$(cat redis-docker-image/tag)"
docker load -i busybox-docker-image/image
docker tag "$(cat busybox-docker-image/image-id)" "$(cat busybox-docker-image/repository):$(cat busybox-docker-image/tag)"
# Run the tests container and its dependencies.
docker-compose -f code-from-git-resource/example/integration.yml run tests
是否可以使用 concourse 的 docker 资源来获取要在 docker 组合任务中使用的容器?目前,我只是从我的私人 docker 注册表中获取用于我的集成测试的容器,但是这样做 connections/resources 不会出现在大厅 UI 中。有什么想法吗?
这是我目前的任务:
---
platform: linux
inputs:
- name: devops-repo
- name:client-repo
params:
RUNNER_IMG:
CLIENT_IMG:
SERVER_IMG:
run:
path: sh
args:
- -exc
- |
# "E2E testing:"
- |
# Export map the parameters to the dockerfile env.
export docker-registry-protractor=${RUNNER_IMG}
export docker-registry-client-dist=${CLIENT_IMG}
export docker-registry-server-dist=${SERVER_IMG}
export HOME=/protractor
# Move to the Protractor test project folder
mkdir $HOME
# Get the docker compose file:
cp devops-repo/my-pipeline/templates/e2e/docker-compose.yml $HOME/docker-compose.yml
# Get the tests:
cp client-repo/test/e2e/** $HOME
cd $HOME
# https://github.com/concourse/concourse/issues/324
# Spin up the stack as described in docker-compose:
docker daemon &
docker-compose up
Dockerfile 使用在管道的前一步构建并上传到私有 docker 注册表的容器。
This repo 很好地介绍了如何 运行 docker 在大厅的 docker 中撰写 - 你最终做的是使用 docker 预装 docker compose 的图像,然后加载其他图像。使用 concourse 预取这些图像,然后在本地缓存它们确实有助于提高性能。
一个技巧是将 docker compose 文件放在获取的代码存储库中实际上更容易,而不是放在 concourse 配置中。
缩略语 yml:
- name: integration
plan:
- aggregate:
- get: code-from-git-resource
params: {depth: 1}
passed: [unit-tests]
trigger: true
- get: redis-docker-image
params: {save: true}
- get: busybox-docker-image
params: {save: true}
- task: Run integration tests
privileged: true
config:
platform: linux
image_resource:
type: docker-image
source:
repository: amidos/dcind
inputs:
- name: code-from-git-resource
- name: redis-docker-image
- name: busybox-docker-image
run:
path: sh
args:
- -exc
- |
source /docker-lib.sh
start_docker
# Strictly speaking, preloading of images is not required.
# However you might want to do it for a couple of reasons:
# - If the image is from a private repository, it is much easier to let concourse pull it,
# and then pass it through to the task.
# - When the image is passed to the task, Concourse can often get the image from its cache.
docker load -i redis-docker-image/image
docker tag "$(cat redis-docker-image/image-id)" "$(cat redis-docker-image/repository):$(cat redis-docker-image/tag)"
docker load -i busybox-docker-image/image
docker tag "$(cat busybox-docker-image/image-id)" "$(cat busybox-docker-image/repository):$(cat busybox-docker-image/tag)"
# Run the tests container and its dependencies.
docker-compose -f code-from-git-resource/example/integration.yml run tests