问题标签 [s2i]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
231 浏览

docker - 无法将 sed 应用于 docker 映像中的标准输出

我有一个 docker 文件,它的入口点是一个 s2i/bin/run 脚本:

services.sh脚本运行 php-fpm 和 nginx:

php 脚本正在记录到,stderr以便脚本执行2>&1重定向到stdout日志聚合器所需的位置。

我想运行sedawk超过日志输出。但是,如果我尝试:

或者

然后当我运行容器时什么都没有显示。没有管道来 sed 的输出php-fpm显示为docker runOK 的输出。

有没有办法确保输出输出到 docker 的输出sedphp-fpm

编辑请注意,我在这两个地方都尝试了明显| sed 's/A/B/g'方法,并且还尝试在两个地方的子外壳中运行管道。两者都不起作用,所以这似乎是一个或问题。$(stuff|sed 's/A/B/g')Dockers2i

0 投票
1 回答
425 浏览

nuget - 如何让 s2i 连接到私有 NuGet 源

我设置了 OpenShift 来构建 ASP.NET Core 应用程序。我已成功配置 OpenShift,因此它可以引入最新的源代码。我在日志中看到它开始构建,但它在恢复步骤时立即停止。

OpenShift 无权访问我们的私有 NuGet 源。

我知道我可以将凭据添加到 NuGet.config 文件,但这意味着将敏感信息提交到存储库,这是我们不想要的。

如docs中所述,我已尝试添加 Input Secrets 。为此,我创建了一个包含 NuGet.config 内容的密钥并将该密钥添加到我的 BuildConfig 中。我仍然收到相同的错误(HTTP 401)。

我能以某种方式告诉 OpenShift 如何连接到私有 NuGet 源吗?也许使用秘密功能?

0 投票
1 回答
580 浏览

docker - 在容器输出中设置行缓冲

我将Java S2I 映像用于在 Openshift(本地)中运行的容器。我的问题是图像的输出是页面缓冲的,oc logs ...没有显示最后的日志。

我可能会启动我的 docker 镜像,stdbuf -oL -e0 java ...但我更愿意坚持使用“官方”镜像(只需将 jar 添加到/deployments. 有什么方法可以减少缓冲(使用行缓冲而不是页面缓冲),或者按需刷新输出?

编辑:似乎我可以更新部署配置并stdbuf在那里传递,但这意味着我必须自己编写所有参数。理想的解决方案是传递--ttyDocker,但我看不出如何在 Openshift 中以这种方式传递自定义参数。

0 投票
0 回答
178 浏览

docker - 如何使用 openshift source-to-image 库而不是 s2i 二进制或可执行文件

如何使用 go 语言使用 openshift source-to-image 库https://github.com/openshift/source-to-image,而不是 s2i 可执行文件从 docker hub 的现有构建器映像构建新映像。

我需要使用上面的库而不是使用 s2i.exe 创建一个新图像。

我曾尝试使用https://github.com/openshift/source-to-image/blob/master/pkg/build/strategies/dockerfile/dockerfile.go构建功能,但它给了我一个错误。

谁能告诉我或至少指导我如何使用这个库从现有的 docker hub builder 图像创建一个新图像,而不是使用 s2i 可执行文件。

提前致谢

0 投票
0 回答
391 浏览

apache - 带有缩小静态文件的 Web 应用程序的 OpenShift 应用程序(npm run build)

我目前正在开发一个由以下组成的 Web 应用程序:

  • api: 在 Python 中使用 Flask 构建的 API
  • app:使用 vue-cli(基于 webpack)构建的 Web 应用程序,并使用npm run build

我已经api使用 OpenShift Python S2I (source-to-image)图像成功构建了:python-36-rhel7.

我希望能够app从源代码自动构建静态 Web,并通过 Nginx 或 Apache 在来自同一项目的单独应用程序中提供它。

它应该:

  • app从 git repo (context-dir=/app/)下载源代码
  • 安装npm
  • npm install用和构建它npm run build
  • 提供构建的 html+js+css 文件

存在一个node.js S2I 映像,但它似乎更适合 Express.js 应用程序。

在 OpenShift 上构建和提供小型静态 Web 应用程序的最佳方式是什么?

0 投票
1 回答
338 浏览

docker - jboss/openjdk18-rhel7:1.1 的 Dockerfile 或 docker 镜像

我在哪里可以找到图像 jboss/openjdk18-rhel7:1.1 的 docker 图像(如果可能,还有 Dockerfile)

此图像正在另一个 dockerfile 中使用

0 投票
1 回答
327 浏览

s2i - 在 S2I 中设置环境变量

目前我正在尝试从我的 S2I 汇编文件中设置一个环境变量,如下所示

export VARIABLE=some_dynamic_value

当我实际运行构建器构建的容器时,环境变量不存在。构建器有没有办法动态设置环境变量?

0 投票
0 回答
108 浏览

docker - 构建此 2.1.300 应用程序的正确 dotnet 核心 SDK 映像?

我有一个 Visual Studio 应用程序,我们想用 OpenShift 构建和部署它,并且已经通过指向包含源代码的 github 存储库成功地进行了手动构建。据我所知,这意味着 OpenShift 用于s2i处理存储库内容并创建我们可以部署的 docker 映像。这行得通!

我需要自动化这个并且我不熟悉 .NET 生态系统,所以首先我想复制当前的行为。我之前曾设法使用合适的 SDK 映像进行构建,但该工作意外丢失,而 Redhat真的希望使用 s2i,因此这就是我现在正在寻找的。如果另一种方法更好,我对此非常开放。

据我了解,这意味着我们需要找到合适的 Linux dotnetcore SDK 映像来构建它。该手册主要是指 Redhat 图像(需要有效订阅),但也指的是registry.centos.org/dotnet/dotnet-21-centos7:latest我后来尝试使用的图像。

到目前为止,完整的构建命令是:

在开发分支上正确签出远程存储库,但随后失败:

不熟悉这个生态系统,我不知道如何从这里开始。建议?


编辑:我看到里面戳:

所以太新了?

0 投票
2 回答
186 浏览

openshift - 修改(和应用)OpenShift 模板时动态应用更改

template.yaml我用服务、deploymentconfig、buildconfig 和 imagestream定义了一个模板(我们称之为模板),应用它oc apply -f template.yaml并运行oc new-app app-name以从模板创建新应用程序。该应用程序的基本工作是使用 S2I 构建 Node.js 应用程序,将其写入新的 ImageStream 并将其部署到暴露了必要服务的 Pod。

现在我决定对模板进行一些更改并将其应用到 OpenShift 上。如何确保所述模板中的所有资源也得到重新配置,而不必删除与该模板关联的所有资源并重新创建它?

0 投票
2 回答
632 浏览

docker - OpenShift:我可以设置一个将 docker 镜像从镜像流复制到外部 docker 存储库的构建吗?

我们正在尝试设置一个尽可能接近默认值的 OpenShift 流程,而不必使用 Jenkins。

到目前为止,我已经设法使 s2i 生成的 Dockerfile 适应我们的需求(以获得 s2i 映像的好处)并设置一个简单的“oc new-app”管道,该管道在 git 存储库推送生成的 docker 映像之后创建一个构建到一个镜像流和一个由镜像流更新触发的部署,推送到一个默认的 pod。这很好用。

现在,我们还希望将此 docker 映像推送到外部 docker 存储库(OpenShift 已知的 RED HAT CONTAINER REGISTRY),我基本上希望保留现有流程,而不是将其调整为使用外部注册表而不是内部注册表。

那么,我可以设置一个“构建”或类似的东西,除了获取该图像并将其推送到 docker 注册表之外什么都不做?如何使用oc命令进行设置?