Gitlab CI服务端口是如何暴露的?

2024-05-25

我有一个.gitlab-ci.yml file:

integration_test:
  services:
    - name: registry.gitlab.com/group/project/testmailserver:1.1
      alias: "mail.email"
  stage: test
  script:
    - ./gradlew -g /cache/.gradle --stacktrace --info integrationTest

该服务是基于此的全栈电子邮件服务器:tvial/docker-mailserver:latest。本地与我的docker-compose配置我可以运行它并连接到它。

version: '2'

services:
  mail:
    image: registry.gitlab.com/group/project/testmailserver:1.1
    hostname: mail
    domainname: localhost
    ports:
      - "25:25"
      - "143:143"
      - "587:587"
      - "993:993"
    environment:
      - ONE_DIR=1
      - DMS_DEBUG=0
      - MAIL_USER=invoicereader
      - MAIL_PASS=invoicereader
    cap_add:
      - NET_ADMIN

如果我运行它docker-compose up并通过端口 993 上的 IMAP 连接到它,它工作正常。集成测试也顺利进行

但是,如果通过gitlab CI执行集成测试,则会失败。我能得到的唯一例外是连接被拒绝.

难道是服务的端口没有暴露好? CI 服务器如何确定必须向所述服务开放的端口?

CI运行时可能会出现什么问题?我怎样才能以不同的方式测试它?

抱歉问了很多问题,我只是绝望地迷路了..


来自官方文档 https://docs.gitlab.com/ee/ci/docker/using_docker_images.html#what-is-a-service:

The services关键字定义了在您的工作期间运行的另一个 Docker 映像,并链接到该 Docker 映像image关键字定义。这允许您在构建期间访问服务映像。

没有image您的关键字.gitlab-ci.yml文件。因此,你的工作地点实际上是不可预测的integration_test runs.

如果您的作业在 Docker 容器内运行,则该容器将链接到您的服务的容器。Links https://docs.docker.com/network/links/是 Docker 的遗留功能,但它与通过单独网络连接的两个容器非常相似。这与一个组合文件中相互通信的多个服务非常相似。

在作业容器中执行的所有内容都可以通过其名称或别名访问您的服务(mail.email)。看看邮件服务器的 Dockerfile https://hub.docker.com/r/tvial/docker-mailserver/dockerfile查看服务监听哪些端口:

EXPOSE 25 587 143 465 993 110 995 4190

这里不需要手动公开任何端口。这ports撰写文件中的关键字将容器的端口公开给主机系统。如果您在 CI 管道中执行类似的操作,它将向运行作业的系统公开端口。这当然不是你想要的。

简而言之:使用类似的东西mail.email:993从 CI 作业中通过 IMAP 连接到邮件服务器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Gitlab CI服务端口是如何暴露的? 的相关文章

  • Jenkins 上的 XCode 项目陷入“codesign”

    我使用 Jenkins 与 XCode 插件进行持续集成 有一个 Jenkins 坚持的项目 usr bin codesign force sign 接下来是旋转器 永远旋转 我以前从未见过这个 以前有人见过这个吗 是配置文件问题还是证书问
  • 在官方 Postgres docker 镜像中记录所有查询

    我有一个基于 Postgres 官方 docker 镜像的 docker 容器 当我使用查看 docker 容器的日志时 我想看到传入的查询docker logs f 这是我的 Dockerfile FROM postgres 11 1 a
  • Docker:保留命令历史记录

    Every time I build a Docker container the command history CTRL R in Ubuntu is lost Is there a way to prevent it from res
  • Tensorboard 无效响应:Jupyterlab 中出现 500 内部服务器错误

    我从 Docker 镜像在 Jupyterlab 中运行一个 pod Docker镜像基于官方tensorflow tensorflow 1 15 0 py3图像 我按照描述安装了所有依赖项here https github com cha
  • Docker pull:不允许操作

    我在拉取一些 docker 映像 但不是全部 时收到此错误 failed to register layer Error processing tar file exit status 1 operation not permitted 例
  • 在 Docker 中启动 tomcat 时无法在端口 8080 上打开网页

    在我的本地计算机 Windows 10 64 位 上 我启动 docker Toolbox 然后我拉取 Tomcat 映像并运行它 如下所示 docker run it tomcat 就跑成功了 31 Dec 2019 17 54 27 5
  • Windows 计算机上出现“来自守护程序的错误响应:无法创建填充程序:OCI 运行时创建失败”错误

    我正在尝试构建一个简单的 Python 映像 然后在 Windows 上以交互方式访问容器 构建过程有效 但运行容器失败 这是 Dockerfile FROM python 3 10 4 WORKDIR app 生成文件 IMAGE scr
  • 有没有办法将 Jenkins 与 Github Pull 请求结合使用?

    我希望 Jenkins 自动查找并运行属于开放拉取请求一部分的每个分支的测试套件 我还没有找到一些 Jenkins 插件 这可能吗 最近发布了一个新插件Jenkins Github 拉取请求构建器 https wiki jenkins ci
  • 写入 cgroup 参数 cpu.rt_runtime_us 时出错

    我正在尝试修改 cgroup 中 docker 容器进程的实时运行时参数 我正在关注这个教程 http www breakage org 2014 08 22 using sched fifo in docker containers on
  • Docker - 如何在 postgres 容器中运行 psql 命令?

    我想在 postgres 映像中使用 psql 以便对数据库运行一些查询 但不幸的是 当我附加到 postgres 容器时 我收到错误 psql 命令未找到 对我来说 如何在容器中运行 postgresql 查询或命令是一个谜 如何在pos
  • Docker连接SQL Server容器非零代码:1

    我正在尝试从创建一个 SQL Server 容器docker compose yml但是当我运行它时 它直接停止并出现一些错误 注意 它运行在带有 docker Preview 的 Apple M1 芯片上 docker compose y
  • Docker忽略limits.conf(试图解决“打开文件太多”错误)

    我正在运行一个 Web 服务器 该服务器正在处理数千个并发 Web 套接字连接 为了实现这一点 在 Debian linux 我的基本镜像是 google debian wheezy 在 GCE 上运行 上 打开文件的默认数量设置为 100
  • python:PyPi公共模块:如何确定是否安全?

    我已经完成了我的 python 3 应用程序 它正在使用 PyPi 的多个公共模块 然而 在我将其部署到我公司的企业 将处理客户的凭据并访问第 3 方 API 之前 我需要尽职调查确保它们既安全又安全 我必须执行哪些步骤 验证 PyPi 模
  • 在docker中使用MySQL数据库设置aspnetcore

    我正在尝试设置一个 docker compose 文件 其中包含 asp net core mysql 数据库和 phpmyadmin 的容器 设置我的 mysql 服务器没有问题 我可以使用 phpmyadmin 访问它 我的 asp n
  • Docker Hub API v2 令牌身份验证问题

    目前 我正在开发一个非常轻量级版本的 Docker 容器编排器 并且我必须能够从公共 Docker Hub 注册表获取图像摘要 我想使用 Docker Registry API v2 来实现此目的 我正在尝试使用以下 API 调用获取授权令
  • 持续集成颠覆

    抱歉 如果这个问题的答案已经存在 我还没有找到 我是网络开发团队的成员 我们维护一个网络门户 发布管理与 Subversion 配合使用 这就是我向门户添加新功能时的工作方式 通过复制 Trunk 创建新的 Branch 在那个分支发展 定
  • 无法从我的电脑上使用 traefik 后面的 gitlab 进行 git 克隆

    这是我的 gitlab 和 traefik 配置 version 3 7 services gitlab web image gitlab gitlab ce latest restart always hostname gitlab ro
  • Gitlab CI - $CI_COMMIT_TAG 为空

    构建时 我需要在 gitlab ci yml 中上次推送的 git 提交的标记值 在构建过程中 我构建了一个 docker 镜像 构建完成后 我想推送这个带有与我的 git 提交相同标签的镜像 到目前为止我的理解是环境变量 CI COMMI
  • 存储库的浅层获取

    我有一个使用模板的 Azure Pipeline yaml 我正在尝试弄清楚如何设置正在克隆的实际存储库的获取深度 resources repositories repository templates type git name DevO
  • Jenkins GIT 包含从未构建过的区域

    我正在尝试使用包含区域在 Jenkins 中构建我的工作 但每当选中此选项时 民意调查结果总是说未检测到任何更改 我尝试了许多不同的路径 以及使用工作区进行 不进行强制轮询 结果是轮询从未检测到任何更改 但一旦我删除这些选项 它们就会在下一

随机推荐

  • 编写 CherryPy 装饰器以进行授权

    我有一个cherrypy应用程序 在某些视图上我想开始只允许某些用户查看它们 并将其他任何人发送到需要授权的页面 有没有办法使用自定义装饰器来做到这一点 我认为这将是最优雅的选择 这是我想做的一个基本示例 class MyApp autho
  • 在浏览器中读取wsdl文件

    当我尝试在浏览器中打开 WSDL 文件 http localhost something file wsdl 时 我被提议下载该文件 但我希望能够在浏览器中以 XML 字符串 形式查看 而不是下载 谢谢 如果您的服务器未发送 WSDL 文件
  • Prometheus scrape_timeout的使用

    在普罗米修斯配置中 我有以下规格的工作 job name name of my job scrape interval 5m scrape timeout 30s metrics path metrics scheme http 创建指标的
  • DropDownList 列表中的项目

    谁能告诉我在下拉列表中添加所有项目的最短方法List
  • C++头文件问题

    我在处理类时尝试了一些 C 代码 这个问题出现在我身上 并且让我有点烦恼 我创建了一个包含类定义的头文件和一个包含实现的 cpp 文件 如果我在不同的 cpp 文件中使用此类 为什么要包含头文件而不是包含类实现的 cpp 文件 如果我包含类
  • JavaScript 数组中的空项和未定义项有什么区别? [复制]

    这个问题在这里已经有答案了 考虑以下 JavaScript 代码 在节点 REPL 中 gt let a new Array 10 undefined gt a lt 10 empty items gt gt a map e gt 1 lt
  • JList 类型不采用参数类型

    当我尝试编译一些代码时 我不断收到这些错误 CCC java 21 type javax swing JList does not take parameters JList
  • 如何编写具有这种不寻常匹配标准的联接?

    我想要 左连接 一个表 以便值不仅连接到匹配行 而且还连接到任何后续的非匹配行 直到下一个匹配行 换句话说 我想用之前的非空值来填充空值 样本数据和期望结果 Table x id 1 2 3 4 5 Table y id val 1 a 4
  • JS 中的 .Jar 文件

    有谁知道如何在 JS 中访问 jar 文件 我已经用 Java 创建了类并作为 jar 文件导入 我想从 JS 文件访问该类 大家好 我感谢你们所有人 我尝试在 Firefox XUL 中使用 JS 列出文件夹中的文件 但我做不到 然后我决
  • 在 Struts 2 中使用单个文件标签上传多个文件

    我想使用单个 Struts 2 文件标签上传多个文件 就像在 Gmail 中一样 我们使用 CTRL 键来选择多个文件来附加多个文件 我知道如何上传多个文件 但我想使用单个文件标签 我在一个小画廊应用程序中上传多个文件 如果您的操作已设置为
  • C++20 views::join 在生成的嵌套范围::single_view 上进入无限循环

    我正在使用 GCC 实现 v10 2 和 v11 来处理 C 20 范围 测试的行为std views join https en cppreference com w cpp ranges join view 我尝试使用生成嵌套视图sin
  • Weka - 探索者和实验者结果之间的差异

    我只是想知道为什么正确分类的百分比与 Weka 的探索者和实验者方面不同 我已检查以确保使用 10 交叉折叠验证以及所有其他参数 有人有主意吗 Thanks 当我在 Weka 邮件列表上给马克 霍尔 Mark Hall 发送电子邮件时 我已
  • 复制粘贴在命令提示符下不起作用,在 Windows 10 中右键单击或键盘快捷键都不起作用 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Win 10 复制粘贴在 cmd 中无法通过右键单击或键盘快捷键来工作 如果我尝试在提示中粘贴一些文本 什么也不会发生 我不知道原因 有什
  • 在没有流媒体服务器的情况下在 Flash 中录制 h.264 视频?

    是否可以在不需要流媒体服务器 如 fms wowza red5 的情况下从 Flash Actionscript 相机 即网络摄像头 保存 h 264 视频 我还想从麦克风获取样本数据 并在客户端对其进行转码 以便用户可以录制 h 264
  • 头部带有脚本的 Nodejs EJS 部分

    我正在使用 EJS 从 Nodejs 服务器渲染和服务器 HTML 页面 我包含的一些部分在头部引用了脚本和样式表 但这会导致客户端对同一文件发出多个请求 例如 如果父视图也包含该文件 例如
  • MS Office SaveAs 类型 FileDialog 在 vb 中带有过滤器

    我想创建一个带有过滤器的 另存为 文件对话框 但这似乎无法使用 FileDialog 类 Microsoft Office 12 0 对象库 实现 文档实际上提到了这一点here http msdn microsoft com en us
  • 通过 MVC 将数据写入数据库的最佳方法是什么?

    我正在使用 MVC 和 EF Core 开发一个家庭作业项目 我正在寻找将数据写入数据库的最佳方法 我是初学者 有两张桌子 Predbilje ba 报名 和Seminari 研讨会 public class Predbilje ba Ke
  • 向窗口句柄发送消息

    我尝试使用 sendmessage 将消息从我的 C 应用程序传递到 C 我的c 代码是这样的 int tmain int argc TCHAR argv COPYDATASTRUCT cpd cpd dwData 0 LPCWSTR st
  • 在 Jest 测试中使用 webpack 的工作加载器解析导入

    我正在编写一个 Jest 测试 但在解决此使用 webpack 的导入时遇到问题worker loader import ImageInfoWorker from worker loader name image info WORKERS
  • Gitlab CI服务端口是如何暴露的?

    我有一个 gitlab ci yml file integration test services name registry gitlab com group project testmailserver 1 1 alias mail e