如何将 Dockerfile 写入 运行 另一个 docker 容器
How to write a Dockerfile to run another docker container
最近我们从 gitlab shell 执行器转移到 docker+machine
执行器。
所以现在挑战来了,在我的 .gitlab-ci.yml
中,我有如下几份工作:
stages:
- RUN_TESTS
build-docker:
stage: RUN_TESTS
script:
- echo "Running the tests..."
- apt-get update
- docker build -t run-tests .
- aws configure set aws_access_key_id ${effi_access_key}
- aws configure set aws_secret_access_key ${effi_secrect_key}
- aws configure set default.region ap-southeast-2
only:
- run-test
tags:
- shared-spot-runner
所以我需要一个 docker
图像,它能够 运行 apt-get update
和 docker build -t run-tests .
以及其他 aws
命令。
问题是,我如何编写一个具有所有这些依赖项的 Dockerfile
?
这里是一个如何在 docker 中使用 docker 和 nodejs 的例子
你可以对你的 dependencies 做同样的事情,或者你可以根据 docker 图像中的 docker 创建新图像,并在你的 gitlab-ci.
# This file is a template, and might need editing before it works on your project.
build-master:
# Official docker image.
image: my-repo/docker:dind-awscli
stage: build
services:
- docker:dind
script:
- apk add nodejs
- node app.js
- docker ps
这使用了 alpine,所以没有 apt,您可以使用 apk(alpine 包管理器)代替。
您还可以将 docker 套接字与所有依赖项ci 一起安装到您现有的映像,因此这会将 docker 添加到您的映像。
编辑:
从 docker:dind
创建 docker 图像
FROM docker:dind
RUN apk add --no-cache aws-cli
构建映像并将其推送到 dockerhub 或 gitlab 注册表:
docker build -t my-repo/docker:dind-awscli .
docker push my-repo/docker:dind-awscli
在你的 .gitlab-ci.yml
中更改图像(就像上面的例子一样,我更新了它)
您可以在本地测试图像以确保其正常工作,如果需要,请尝试添加更多应用:
docker run -it --rm my-repo/docker:dind-awscli sh
# Inside the container try
aws version
祝你好运
最近我们从 gitlab shell 执行器转移到 docker+machine
执行器。
所以现在挑战来了,在我的 .gitlab-ci.yml
中,我有如下几份工作:
stages:
- RUN_TESTS
build-docker:
stage: RUN_TESTS
script:
- echo "Running the tests..."
- apt-get update
- docker build -t run-tests .
- aws configure set aws_access_key_id ${effi_access_key}
- aws configure set aws_secret_access_key ${effi_secrect_key}
- aws configure set default.region ap-southeast-2
only:
- run-test
tags:
- shared-spot-runner
所以我需要一个 docker
图像,它能够 运行 apt-get update
和 docker build -t run-tests .
以及其他 aws
命令。
问题是,我如何编写一个具有所有这些依赖项的 Dockerfile
?
这里是一个如何在 docker 中使用 docker 和 nodejs 的例子 你可以对你的 dependencies 做同样的事情,或者你可以根据 docker 图像中的 docker 创建新图像,并在你的 gitlab-ci.
# This file is a template, and might need editing before it works on your project.
build-master:
# Official docker image.
image: my-repo/docker:dind-awscli
stage: build
services:
- docker:dind
script:
- apk add nodejs
- node app.js
- docker ps
这使用了 alpine,所以没有 apt,您可以使用 apk(alpine 包管理器)代替。 您还可以将 docker 套接字与所有依赖项ci 一起安装到您现有的映像,因此这会将 docker 添加到您的映像。
编辑:
从 docker:dind
FROM docker:dind
RUN apk add --no-cache aws-cli
构建映像并将其推送到 dockerhub 或 gitlab 注册表:
docker build -t my-repo/docker:dind-awscli .
docker push my-repo/docker:dind-awscli
在你的 .gitlab-ci.yml
中更改图像(就像上面的例子一样,我更新了它)
您可以在本地测试图像以确保其正常工作,如果需要,请尝试添加更多应用:
docker run -it --rm my-repo/docker:dind-awscli sh
# Inside the container try
aws version
祝你好运