TLDR: spring boot gradlebootBuildImage任务因 x509 证书验证错误而失败(由于 zscaler)。在哪里添加根证书?
信息
我们正在使用 spring boot (2.3) 的新“bootBuildImage”来构建 docker 镜像。
最近,我们的 IT 团队启用了“zscaler 无处不在”,它通过公司支持的“中间人”有效地路由所有 http 和 https 流量,即使用 DNS 来“网关/检查点”网络流量
错误
在此更改后,gradle 失败并显示 X509 证书验证错误:
2021-03-01T08:40:42.120-0600 [QUIET] [system.out] [creator] unable to request https://repo.
spring.io/release/org/springframework/cloud/spring-cloud-bindings/1.7.0/spring-cloud-bindings-1.7.0
.jar
2021-03-01T08:40:42.120-0600 [QUIET] [system.out] [creator] Get "https://repo.spring.io/release/org/springframework/cloud/spring-cloud-bindings/1.7.0/spring-cloud-bindings-1.7.0.jar": x509: certificate signed by unknown authority
202
Run Code Online (Sandbox Code Playgroud)
更多上下文
题
我知道应该能够在信任存储中安装 zscaler 根证书,但不清楚哪个信任存储?(以及文件系统上的哪个位置?)
我不清楚为什么'spring cloud download'失败,但其他下载成功,即这次下载成功:
2021-03-01T08:40:34.790-0600 [QUIET] …Run Code Online (Sandbox Code Playgroud) 我知道slug 编译器会删除.git在创建 heroku slug 时目录,但是有什么方法可以配置 Heroku 以便我可以从脚本中访问当前正在运行的 git 提交号?
我希望能够在我的 sinatra 应用程序(在 Heroku 中运行)上有一个小链接,上面写着“运行版本 e72fb274a0 ”(或类似的东西)。如何检索它,或强制 slug 编译器将其添加到环境变量中?
进步:
我认为最好的方法是制作一个自定义 buildpack,在删除 .git 目录之前将 git commit 版本号写入 heroku slug。
我已经尝试过这样做(请参阅我的 ruby buildpack 分支),但是我添加的行 –第 23 行– 似乎没有完成这项工作。Heroku 看到并使用新的 buildpack,但似乎没有将文件写入 slug。
任何人都知道为什么我的自定义 buildpack 没有按预期工作?
谢谢,
J.P
我正在为Fantom编写一个自定义Heroku buildpack(heroku-buildpack-fantom),作为脚本的一部分,我已经下载了一个文件(来自语言供应商),但是如何解压缩呢?compile.zip
unzip 不是公认的命令.
gunzip存在,但我不能用它来解压缩.zip文件.
我错过了什么?
我有这个部署到heroku的应用程序:
https://github.com/justin808/react-webpack-rails-tutorial
http://react-webpack-rails-tutorial.herokuapp.com/
该技术在此处描述:http://www.railsonmaui.com/blog/2014/10/02/integrating-webpack-and-the-es6-transpiler-into-an-existing-rails-project/
目前,package.json位于项目的根级别.
如何将/package.json和/ node_modules移动到/ webpack目录中?
即,如何告诉节点buildpack在哪里查找package.json?
我想用几个月的时间就可以使用在线服务生成PCB gerber的图像,并且想要自己动手制作.
我的选择是heroku(可以改变),gerber解析器/查看器的选择是gerbv(再次,可以改变)
我已经阅读了关于buildpacks和vagrant以及所有关于让gerbv能够在heroku上运行的选项.我现在被卡住的部分是gerbv需要gtk而heroku没有它(不需要它).
如何在没有gtk部分的情况下编译gerbv?
编辑:我使用wget将gerbv的源代码下载到heroku,然后解压缩,然后进入src文件夹,发出以下命令
gcc -Wall -fPIC -c *.c
Run Code Online (Sandbox Code Playgroud)
这允许我为所有C代码gerbv提供创建.o文件.不幸的是,它需要gtk来编译,heroku不能.因此,完全有可能库部分不能与接口部分分离,并且能够独立运行libgerbv.
我使用以下buildpack:heroku-buildpack-nodejs
并且默认情况下,它应该缓存和恢复node_modules。
yarn.lock文件与一起位于应用程序的根目录package.json。
我也加入"cacheDirectories": [".cache/yarn"]了package.json
在审阅应用程序构建日志分析期间,我看到:
-----> Restoring cache
Loading 1 from cacheDirectories (package.json):
- .cache/yarn (not cached - skipping)
Run Code Online (Sandbox Code Playgroud)
...
-----> Installing dependencies
Installing node modules (yarn.lock)
Run Code Online (Sandbox Code Playgroud)
...
-----> Caching build
- node_modules
Run Code Online (Sandbox Code Playgroud)
好像这个问题在2016年12月20日被打开了:https : //github.com/heroku/heroku-buildpack-nodejs/issues/359
如何在不对每个构建都安装依赖项的情况下实现缓存机制?
我目前正在开发一个 Spring Native 应用程序,它使用 paketo buildpack 进行构建并生成 Docker 映像。我想知道是否可以通过添加第三方工具(例如 Datadog 代理)来自定义生成的 Docker 映像。
另外,目前生成的容器镜像已安装在本地,是否可以直接将其发送到另一个 Docker 存储库中?
这是我的第一个SE问题.通常我可以通过这个伟大的网站轻松找到答案,但遗憾的是,在这个场合,我找不到任何关于我在寻找的东西,无论是在这里还是其他地方.让我解释一下这个问题:
我编写了一个C++程序来进行一些数值计算.它需要命令行参数并写入stdout,并在运行OSX的系统上正常工作.
我希望在线托管这个版本,让我的同行更容易地尝试一下,所以我编写了一些Node.js和Express代码来从表单中获取输入并将其作为命令行参数提供给可执行文件.然后我按以下方式执行名为'factoriser'的二进制文件:
const exec = require('child_process').exec;
app.post('/', function (req, res) {
var input = req.body.numberinput; //Number entered on the webpage
const child = exec('./numericcomp ' + input, {timeout: 20000}, function(error, stdout, stderr) {
//Code here writes stdout to the page
}
}
Run Code Online (Sandbox Code Playgroud)
上面的工作完全在我的本地机器上但是当我将它部署到Heroku然后尝试输入(这里我试过2131)我得到一个错误:
Error: Command failed: ./numericcomp 2131 ./numericcomp: 3: ./numericcomp: Syntax error: word unexpected (expecting ")")
Run Code Online (Sandbox Code Playgroud)
这是exec中的回调.
所以我真的不知道该怎么做,问题是Heroku只是没有正确运行可执行文件.关于Heroku如何工作,我并不是特别了解,我已经阅读了有关buildpacks等的信息,但是执行二进制文件似乎是一个非常复杂的过程.是因为我只有一个dyno并且无法运行子进程吗?
如果有人能指出我正确的方向,我会非常感激,似乎我已经完成了所有艰苦的工作,但无法克服最后的障碍.
将 spring boot 升级到 2.4 后,我们无法运行通过此脚本创建的最终 docker 镜像:
script:
- echo $CI_JOB_TOKEN | docker login -u gitlab-ci-token --password-stdin $CI_REGISTRY
- apk add openjdk11
- ./gradlew bootBuildImage --imageName=$DOCKER_IMAGE_INTERMEDIATE
- docker build -f ./docker/Dockerfile --build-arg base_image=$DOCKER_IMAGE_INTERMEDIATE -t $DOCKER_IMAGE_TAGGED .
- docker push $DOCKER_IMAGE_TAGGED
- docker tag $DOCKER_IMAGE_TAGGED $DOCKER_IMAGE_LATEST
- docker push $DOCKER_IMAGE_LATEST
Run Code Online (Sandbox Code Playgroud)
我们Dockerfile只是创建一个文件夹并将chown其发送给CNB用户:
# The base_image holds a reference to the image created by ./gradlew bootBuildImage
ARG base_image
FROM ${base_image}
ENV SOME_PATH /var/lib/some/files
USER root
RUN …Run Code Online (Sandbox Code Playgroud) 这是我的requirements.txt psycopg2-binary==2.8.3 # via -r requests/base.in
我正在 docker 镜像中构建。我的印象是,如果我安装,psycopg2-binary vs psycopg2我不应该安装额外的 postgresql 开发库。我错了吗?
pack build --builder=gcr.io/buildpacks/builder:v1 test-python
Collecting psycopg2-binary==2.8.3
Downloading psycopg2-binary-2.8.3.tar.gz (378 kB)
ERROR: Command errored out with exit status 1:
command: /layers/google.python.runtime/python/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-z7z_l56l/psycopg2-binary_ddfc5ed05bb44cf4b7e2f14d634bd6ae/setup.py'"'"'; __file__='"'"'/tmp/pip-install-z7z_l56l/psycopg2-binary_ddfc5ed05bb44cf4b7e2f14d634bd6ae/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-vsc_2hlv
cwd: /tmp/pip-install-z7z_l56l/psycopg2-binary_ddfc5ed05bb44cf4b7e2f14d634bd6ae/
Complete output (23 lines):
running egg_info
creating /tmp/pip-pip-egg-info-vsc_2hlv/psycopg2_binary.egg-info
writing /tmp/pip-pip-egg-info-vsc_2hlv/psycopg2_binary.egg-info/PKG-INFO
writing dependency_links to /tmp/pip-pip-egg-info-vsc_2hlv/psycopg2_binary.egg-info/dependency_links.txt
writing top-level names to /tmp/pip-pip-egg-info-vsc_2hlv/psycopg2_binary.egg-info/top_level.txt
writing manifest file '/tmp/pip-pip-egg-info-vsc_2hlv/psycopg2_binary.egg-info/SOURCES.txt'
Error: pg_config …Run Code Online (Sandbox Code Playgroud)