📌  相关文章
📜  如何让 gitlab runner 使用本地 docker 镜像 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:38:54.708000             🧑  作者: Mango

如何让 GitLab Runner 使用本地 Docker 镜像

在 GitLab CI/CD 中使用 Docker 镜像是非常常见的方式。然而,默认情况下,GitLab Runner 会使用 Docker Hub 中的公共镜像。这种方式可能不适合你的场景,尤其是当你需要使用一个专门的镜像或者你的本地网络环境无法访问公共镜像库。

在这篇文章中,我们会讨论如何让 GitLab Runner 使用本地 Docker 镜像。

准备步骤

首先,我们需要准备一些工作:

  1. 安装 GitLab Runner

    你可以按照 GitLab Runner 安装文档 在你的环境中安装 GitLab Runner。

  2. 安装 Docker Engine

    如果你想使用 Docker 镜像,那么你需要在你的环境中安装 Docker Engine。请参考官方文档: Docker Doc

步骤
1. 编写 Dockerfile

你需要编写一个 Dockerfile 文件来创建一个自定义的 Docker 镜像。下面是一个简单的例子:

FROM node:latest
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]

这个 Dockerfile 文件使用 Node.js 来创建一个简单的 Web 应用程序镜像。

2. 构建本地镜像

你需要使用 Docker Engine 来构建你的 Docker 镜像。在本地文件夹中创建 Dockerfile 文件后,请在该文件夹中运行以下命令:

docker build -t my-node-app .

这个命令将创建一个名为 my-node-app 的 Docker 镜像。. 意味着使用当前文件夹中的 Dockerfile 文件。

3. 推送本地镜像

你需要将你的本地镜像推送到 GitLab Runner 中的 Docker 仓库中。

docker tag my-node-app localhost:5000/my-node-app
docker push localhost:5000/my-node-app

这些命令将从本地 Docker 客户端将镜像推送到 localhost:5000 的 Docker 仓库。注意:这个端口号可以配置(在 GitLab Runner 配置文件中)。

4. 配置 GitLab Runner

你需要在 GitLab Runner 的配置文件中添加一些额外的配置以使用本地 Docker 镜像。下面是一个例子,使用上面创建的 my-node-app 镜像。

...
services:
  - name: docker:19.03.12-dind
    command: ["--experimental"]
  - name: localhost:5000/my-node-app:latest
    alias: my-node-app
...

这个 YAML 文件告诉 GitLab Runner 使用 docker:19.03.12-dind 和 localhost:5000/my-node-app:latest 两个服务(服务也可以通过特定的网址访问,同时alias指定别名my-node-app)。

最后,重启 GitLab Runner 以使更改生效。

sudo gitlab-runner restart
结论

现在你已经学会了如何让 GitLab Runner 使用本地 Docker 镜像。这使得 CI/CD 管道变得更加灵活和快速,并支持私有镜像和本地存储库的使用。