我有一个位于专用网络中的 Nexus 注册表 我需要 docker-compose 在 github 操作中构建,该操作可以构建一个 dockerfile,该文件可以交互/可访问 nexus
我已经完成了
<servicenamene>.tailxxxxx.ts.net
我已经设置了 github 操作,如下所示
steps:
- name: Tailscale
uses: tailscale/github-action@v2
with:
oauth-client-id: ${{ secrets.TS_OAUTH_CLIENT_ID }}
oauth-secret: ${{ secrets.TS_OAUTH_SECRET }}
tags: "tag:k8s"
version: 1.56.0
- uses: actions/checkout@v2
- run: docker login -u xxx -p ${{ secrets.DOCKER_PASSWORD }} xxx.xxx.io
- run: |
.... docker-compose build ...
Dockerfile
如下所示:
###
FROM node:$NODE_VERSION as builder
ARG NEXUS_NPM_TOKEN
ARG NEXUS_CERT_FILE
RUN npm config set //<servicenamene>.tailxxxxx.ts.net:8080/repository/npm-xxx/:_authToken $NEXUS_NPM_TOKEN \
&& npm config set @psa:registry http://<servicenamene>.tailxxxxx.ts.net:8080/repository/npm-xxx/
###
但是,nexus 似乎不接受主机标头与
nexusHttpHost
或 $NEXUS_HTTP_HOST
不匹配的请求
有什么想法吗?
您的存储库管理器可能在“应用程序服务器设置”中启用了“强制基本 URL”。以下文档引用该设置不能很好地与反向代理一起使用(如 tailscale 入口)。
警告
除非 Sonatype 明确建议,否则请勿启用强制基本 URL
- 启用此功能很可能会导致您的存储库管理器无法工作 正确地通过反向代理。强制基本 URL 的原始用例不再有效。
https://help.sonatype.com/en/customizing-server-configuration.html#application-server-settings
由于您使用 tailscale 作为入口(代理),发送到注册表服务器的主机标头可能是 tailnet 地址 (
servicename.tailxyz.ts.net
),这可能与注册表应用程序服务器的“基本 URL”不匹配。