本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
cimg/elixir 是由 CircleCI 创建的 Docker 镜像,专为持续集成构建设计。每个标签都包含完整的 Elixir 安装,可与 mix 和 hex 配合使用。
注意:此镜像旨在替代旧版 CircleCI Elixir 镜像
circleci/elixir。
!CircleCI Build Status !Software License !Docker Pulls !CircleCI Community !Repository
适用于任何需要在 CircleCI 环境中构建、测试 Elixir 项目的场景。特别适合以下情况:
此镜像可与 CircleCI docker 执行器一起使用。例如:
jobs: build: docker: - image: cimg/elixir:1.9 steps: - checkout - run: mix --version - run: mix deps.get - run: mix test
在上述示例中,CircleCI Elixir Docker 镜像用作主容器。具体来说,使用了标签 1.9,这意味着 Elixir 版本将是 v1.9。现在可以在此作业的步骤中使用 mix 命令。
此镜像包含 Elixir 以及支持版本的 Erlang。
父标签提供了选择特定版本的能力。结合父标识符,Elixir 现在支持选择要使用的 Erlang 版本,格式为:parentSlug-parentTag,例如 erlang-22.3。
变体镜像通常包含相同的基础软件,但有一些额外的修改。
Node.js 变体与标准 Elixir 镜像相同,但额外安装了 Node.js。可以通过在现有 cimg/elixir 标签末尾添加 -node 来使用 Node.js 变体。
jobs: build: docker: - image: cimg/elixir:1.11-node steps: - checkout - run: mix --version - run: node --version
Browsers 变体与标准 Elixir 镜像相同,但通过 apt 预安装了 Node.js、Selenium 和浏览器依赖项。可以通过在现有 cimg/elixir 标签末尾添加 -browsers 来使用 browsers 变体。
Browsers 变体旨在与 CircleCI Browser Tools orb 配合使用。您可以使用该 orb 安装特定版本的 Google Chrome 和/或 Firefox 到构建环境中。该镜像包含使用浏览器及其驱动程序所需的所有支持工具。
orbs: browser-tools: circleci/browser-tools@1.1 jobs: build: docker: - image: cimg/elixir:1.11-browsers steps: - browser-tools/install-browser-tools - checkout - run: | mix --version node --version java --version google-chrome --version
此镜像具有以下标签方案:
cimg/elixir:<elixir-version>[-erlang-version][-variant]
<elixir-version> - 要使用的 Elixir 版本。可以是完整的 SemVer 点版本(如 1.10.2)或仅次要版本(如 1.10)。如果使用次要版本标签,它将自动指向未来的补丁更新。例如,标签 1.10 现在指向 Elixir 1.10.2,但当下一个版本发布时,它将指向 1.10.3。
<erlang-version> - 指定要使用的 Erlang 版本,符合 兼容性图表。注意:默认镜像标签 cimg/elixir:<elixir-version>[-variant] 将使用最新版本,例如 24.3。
[-variant] - 可选使用变体标签。例如,可以像这样使用 Node.js 变体:cimg/elixir:1.10.1-node。
可以使用此仓库在本地构建和运行镜像。这需要满足以下要求:
社区用户(对本仓库没有写入权限)
在 GitHub 上 Fork 此仓库。获取克隆 URL 时,需要添加 --recurse-submodules 到克隆命令,以填充此仓库中包含的 Git 子模块。类似于:
git clone --recurse-submodules <我的克隆URL>
如果错过了此步骤并已克隆,可以运行 git submodule update --recursive 来填充子模块。然后可以选择将此仓库添加为自己仓库的上游:
git remote add upstream [***]
维护者(对本仓库有写入权限)
使用以下命令克隆项目,以便填充子模块:
git clone --recurse-submodules ***:CircleCI-Public/cimg-elixir.git
可以使用 gen-dockerfiles.sh 脚本为特定的 Elixir 版本生成 Dockerfiles。例如,要为 Elixir v1.10.2 生成 Dockerfile,可以从仓库根目录运行以下命令:
./shared/gen-dockerfiles.sh 1.10.2
生成的 Dockerfile 将位于 ./1.10/<parent-tag>/Dockerfile,以及位于 ./1.10/<parent-tag>/<variant>/Dockerfile 的相应变体。
要在本地构建此镜像并试用,可以运行以下命令(假设 Erlang 版本为 23.3):
cd 1.10 docker build -t test/elixir:1.10.2-erlang-23.3 . docker run -it test/elixir:1.10.2-erlang-23.3 bash
如果使用默认版本(最新),可以运行以下任一命令:
docker build -t test/elixir:1.10.2 . docker run -it test/elixir:1.10.2 bash docker build -t test/elixir:1.10.2-erlang-24.3 . docker run -it test/elixir:1.10.2-erlang-24.3 bash
要像本仓库一样在本地构建 Docker 镜像,需要运行 build-images.sh 脚本:
./build-images.sh
这需要先生成 Dockerfiles 之后运行。发布 CircleCI 的正式镜像时,此脚本是从 CircleCI 管道运行的,而不是在本地运行。
确保版本化 Dockerfiles 和 build-images.sh 的所有更改都已还原,只留下 Dockerfile.template 作为修改后的文件。在上面的部分测试时,这些文件会被修改。特定版本将在镜像发布时包含。
可以使用上述各个脚本来创建镜像的正确文件,然后添加到新的 git 分支、提交等。包含一个发布脚本使此过程更容易。要为此镜像进行正确的发布,以假的 Elixir 版本 v99.9.9 为例,从仓库根目录运行以下命令:
./shared/release.sh 99.9.9
这将自动创建一个新的 Git 分支,生成 Dockerfile(s),暂存更改,提交它们,并将它们推送到 GitHub。提交消息将以字符串 [release] 结尾。CircleCI 使用此字符串来确定何时将镜像推送到 Docker Hub。之后需要做的就是:
然后主分支构建将发布版本。
更改如何合并到此镜像取决于它们的来源:
构建脚本 - ./shared 子模块内的更改发生在其 自己的仓库 中。要使这些更改影响此镜像,需要更新子模块。通常如下:
cd shared git pull cd .. git add shared git commit -m "更新子模块以修复foo问题。"
父镜像 - 按照设计,当父镜像发生更改时,它们不会出现在现有的 Elixir 镜像中。这是为了帮助"确定性"并防止破坏客户构建。新的 Elixir 镜像将自动获取更改。
如果确实希望将父镜像的更改发布到 Elixir 镜像中,则必须像构建新镜像一样构建特定的镜像版本。这将创建一个新的 Dockerfile,一旦发布,就是一个新的镜像。
Elixir 特定更改 - 编辑此仓库中的 Dockerfile.template 文件是专门修改 Elixir 镜像的方法。不要忘记,要在本地查看这些更改中的任何一个,需要再次运行 gen-dockerfiles.sh 脚本(见上文)。
我们鼓励对此仓库提出问题和拉取请求,但是,为了珍惜您的时间,请注意以下几点:
我们不会在此镜像中包含所有内容。为了让我们在 Elixir 镜像中添加工具,它必须是维护良好的,并且对大量 Elixir 开发者有用。添加的每个工具都会使所有用户的镜像变大且变慢,因此彻底了解镜像中包含的内容将使每个人受益。
欢迎 PR。如果您有一个可能需要大量时间才能完成的 PR,最好先打开一个问题来讨论它,以确保它值得投入时间。
问题应该是报告错误或请求在此镜像中添加/删除工具。如需有关镜像的帮助,请访问 CircleCI Discuss。
.circleci/config.yml 中支持的所有键和值。此仓库采用 MIT 许可证。许可证可在 此处 找到。


免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429