Pull Docker images from Nexus connector port 8087

The Docker daemon reaches the Nexus Docker group over the dedicated
connector port 8087 (its registry mirror), not the main 8081 HTTP port,
which caused HTTPS-to-HTTP pull failures in CI. Repoint all image refs to
171.22.25.73:8087 at the connector root; npm and NuGet stay on 8081.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
soroush.asadi
2026-05-30 05:17:21 +03:30
parent 09c55669ca
commit 8ca2cae988
10 changed files with 35 additions and 34 deletions
+11 -11
View File
@@ -17,13 +17,13 @@ concurrency:
# ubuntu-latest:docker://node:20-alpine ← CI jobs run in real Docker containers # ubuntu-latest:docker://node:20-alpine ← CI jobs run in real Docker containers
# self-hosted:host ← deploy runs directly on the server # self-hosted:host ← deploy runs directly on the server
# #
# All images/packages served from local Nexus at 171.22.25.73:8081: # All images/packages served from local Nexus at 171.22.25.73:
# Docker images → 171.22.25.73:8081 (docker-group: Docker Hub + MCR) # Docker images → 171.22.25.73:8087 (docker-group connector: Docker Hub + MCR)
# NuGet → http://171.22.25.73:8081/repository/nuget-group/ # NuGet → http://171.22.25.73:8081/repository/nuget-group/
# npm → http://171.22.25.73:8081/repository/npm-group/ # npm → http://171.22.25.73:8081/repository/npm-group/
# #
# The runner host is 171.22.25.73, so Nexus is always reachable directly. # The runner host is 171.22.25.73, so Nexus is always reachable directly.
# Daemon must have: "insecure-registries": ["171.22.25.73:8081"] # Daemon must have: "insecure-registries": ["171.22.25.73:8087"]
# ───────────────────────────────────────────────────────────────────────────── # ─────────────────────────────────────────────────────────────────────────────
jobs: jobs:
@@ -32,12 +32,12 @@ jobs:
name: "CI · API (dotnet build + test)" name: "CI · API (dotnet build + test)"
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: 171.22.25.73:8081/repository/docker-group/dotnet/sdk:10.0 image: 171.22.25.73:8087/dotnet/sdk:10.0
options: >- options: >-
--add-host=gitea:host-gateway --add-host=gitea:host-gateway
services: services:
postgres: postgres:
image: 171.22.25.73:8081/repository/docker-group/postgres:16-alpine image: 171.22.25.73:8087/postgres:16-alpine
env: env:
POSTGRES_DB: meezi_test POSTGRES_DB: meezi_test
POSTGRES_USER: meezi POSTGRES_USER: meezi
@@ -48,7 +48,7 @@ jobs:
--health-timeout 5s --health-timeout 5s
--health-retries 10 --health-retries 10
redis: redis:
image: 171.22.25.73:8081/repository/docker-group/redis:7-alpine image: 171.22.25.73:8087/redis:7-alpine
options: >- options: >-
--health-cmd "redis-cli ping" --health-cmd "redis-cli ping"
--health-interval 5s --health-interval 5s
@@ -99,7 +99,7 @@ jobs:
name: "CI · Admin API (dotnet build)" name: "CI · Admin API (dotnet build)"
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: 171.22.25.73:8081/repository/docker-group/dotnet/sdk:10.0 image: 171.22.25.73:8087/dotnet/sdk:10.0
options: >- options: >-
--add-host=gitea:host-gateway --add-host=gitea:host-gateway
steps: steps:
@@ -141,7 +141,7 @@ jobs:
name: "CI · Dashboard (tsc)" name: "CI · Dashboard (tsc)"
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: 171.22.25.73:8081/repository/docker-group/node:20-alpine image: 171.22.25.73:8087/node:20-alpine
options: >- options: >-
--add-host=gitea:host-gateway --add-host=gitea:host-gateway
steps: steps:
@@ -171,7 +171,7 @@ jobs:
name: "CI · Admin Web (tsc)" name: "CI · Admin Web (tsc)"
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: 171.22.25.73:8081/repository/docker-group/node:20-alpine image: 171.22.25.73:8087/node:20-alpine
options: >- options: >-
--add-host=gitea:host-gateway --add-host=gitea:host-gateway
steps: steps:
@@ -201,7 +201,7 @@ jobs:
name: "CI · Website (tsc)" name: "CI · Website (tsc)"
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: 171.22.25.73:8081/repository/docker-group/node:20-alpine image: 171.22.25.73:8087/node:20-alpine
options: >- options: >-
--add-host=gitea:host-gateway --add-host=gitea:host-gateway
steps: steps:
@@ -231,7 +231,7 @@ jobs:
name: "CI · Koja (tsc)" name: "CI · Koja (tsc)"
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: 171.22.25.73:8081/repository/docker-group/node:20-alpine image: 171.22.25.73:8087/node:20-alpine
options: >- options: >-
--add-host=gitea:host-gateway --add-host=gitea:host-gateway
steps: steps:
+3 -3
View File
@@ -16,8 +16,8 @@ services:
extra_hosts: extra_hosts:
- "mirror:host-gateway" - "mirror:host-gateway"
args: args:
DOTNET_SDK_IMAGE: ${DOTNET_SDK_IMAGE:-171.22.25.73:8081/repository/docker-group/dotnet/sdk:10.0} DOTNET_SDK_IMAGE: ${DOTNET_SDK_IMAGE:-171.22.25.73:8087/dotnet/sdk:10.0}
DOTNET_ASPNET_IMAGE: ${DOTNET_ASPNET_IMAGE:-171.22.25.73:8081/repository/docker-group/dotnet/aspnet:10.0} DOTNET_ASPNET_IMAGE: ${DOTNET_ASPNET_IMAGE:-171.22.25.73:8087/dotnet/aspnet:10.0}
container_name: meezi-admin-api container_name: meezi-admin-api
restart: unless-stopped restart: unless-stopped
depends_on: depends_on:
@@ -52,7 +52,7 @@ services:
extra_hosts: extra_hosts:
- "mirror:host-gateway" - "mirror:host-gateway"
args: args:
NODE_IMAGE: ${NODE_IMAGE:-171.22.25.73:8081/repository/docker-group/node:20-alpine} NODE_IMAGE: ${NODE_IMAGE:-171.22.25.73:8087/node:20-alpine}
NPM_REGISTRY: ${NPM_REGISTRY:-http://171.22.25.73:8081/repository/npm-group/} NPM_REGISTRY: ${NPM_REGISTRY:-http://171.22.25.73:8081/repository/npm-group/}
NEXT_PUBLIC_ADMIN_API_URL: ${NEXT_PUBLIC_ADMIN_API_URL:-http://localhost:5081} NEXT_PUBLIC_ADMIN_API_URL: ${NEXT_PUBLIC_ADMIN_API_URL:-http://localhost:5081}
container_name: meezi-admin-web container_name: meezi-admin-web
+11 -10
View File
@@ -1,11 +1,12 @@
# Meezi — main stack (Postgres, Redis, API, Dashboard, Website, Koja) # Meezi — main stack (Postgres, Redis, API, Dashboard, Website, Koja)
# #
# All images/packages served from local Nexus at 171.22.25.73:8081 # All images/packages served from local Nexus at 171.22.25.73:
# Docker images → 171.22.25.73:8081 (docker-group: proxies Docker Hub + MCR) # Docker images → 171.22.25.73:8087 (docker-group connector: proxies Docker Hub + MCR)
# NuGet → http://171.22.25.73:8081/repository/nuget-group/ # NuGet → http://171.22.25.73:8081/repository/nuget-group/
# npm → http://171.22.25.73:8081/repository/npm-group/ # npm → http://171.22.25.73:8081/repository/npm-group/
# #
# Docker Desktop: add "insecure-registries": ["171.22.25.73:8081"] to daemon.json # Docker Desktop: add "insecure-registries": ["171.22.25.73:8087"] to daemon.json
# (8087 is the Nexus Docker connector port; it serves images at the root path)
# #
# Local dev: # Local dev:
# cp .env.example .env # cp .env.example .env
@@ -25,7 +26,7 @@
services: services:
postgres: postgres:
image: ${POSTGRES_IMAGE:-171.22.25.73:8081/repository/docker-group/postgres:16-alpine} image: ${POSTGRES_IMAGE:-171.22.25.73:8087/postgres:16-alpine}
container_name: meezi-db container_name: meezi-db
restart: unless-stopped restart: unless-stopped
environment: environment:
@@ -43,7 +44,7 @@ services:
retries: 10 retries: 10
redis: redis:
image: ${REDIS_IMAGE:-171.22.25.73:8081/repository/docker-group/redis:7-alpine} image: ${REDIS_IMAGE:-171.22.25.73:8087/redis:7-alpine}
container_name: meezi-redis container_name: meezi-redis
restart: unless-stopped restart: unless-stopped
ports: ports:
@@ -64,8 +65,8 @@ services:
extra_hosts: extra_hosts:
- "mirror:host-gateway" - "mirror:host-gateway"
args: args:
DOTNET_SDK_IMAGE: ${DOTNET_SDK_IMAGE:-171.22.25.73:8081/repository/docker-group/dotnet/sdk:10.0} DOTNET_SDK_IMAGE: ${DOTNET_SDK_IMAGE:-171.22.25.73:8087/dotnet/sdk:10.0}
DOTNET_ASPNET_IMAGE: ${DOTNET_ASPNET_IMAGE:-171.22.25.73:8081/repository/docker-group/dotnet/aspnet:10.0} DOTNET_ASPNET_IMAGE: ${DOTNET_ASPNET_IMAGE:-171.22.25.73:8087/dotnet/aspnet:10.0}
container_name: meezi-api container_name: meezi-api
restart: unless-stopped restart: unless-stopped
depends_on: depends_on:
@@ -110,7 +111,7 @@ services:
extra_hosts: extra_hosts:
- "mirror:host-gateway" - "mirror:host-gateway"
args: args:
NODE_IMAGE: ${NODE_IMAGE:-171.22.25.73:8081/repository/docker-group/node:20-alpine} NODE_IMAGE: ${NODE_IMAGE:-171.22.25.73:8087/node:20-alpine}
NPM_REGISTRY: ${NPM_REGISTRY:-http://171.22.25.73:8081/repository/npm-group/} NPM_REGISTRY: ${NPM_REGISTRY:-http://171.22.25.73:8081/repository/npm-group/}
NEXT_PUBLIC_API_URL: ${NEXT_PUBLIC_API_URL:-http://localhost:5080} NEXT_PUBLIC_API_URL: ${NEXT_PUBLIC_API_URL:-http://localhost:5080}
container_name: meezi-web container_name: meezi-web
@@ -131,7 +132,7 @@ services:
extra_hosts: extra_hosts:
- "mirror:host-gateway" - "mirror:host-gateway"
args: args:
NODE_IMAGE: ${NODE_IMAGE:-171.22.25.73:8081/repository/docker-group/node:20-alpine} NODE_IMAGE: ${NODE_IMAGE:-171.22.25.73:8087/node:20-alpine}
NPM_REGISTRY: ${NPM_REGISTRY:-http://171.22.25.73:8081/repository/npm-group/} NPM_REGISTRY: ${NPM_REGISTRY:-http://171.22.25.73:8081/repository/npm-group/}
MEEZI_API_URL: http://api:8080 MEEZI_API_URL: http://api:8080
NEXT_PUBLIC_SITE_URL: ${NEXT_PUBLIC_SITE_URL:-http://localhost:3010} NEXT_PUBLIC_SITE_URL: ${NEXT_PUBLIC_SITE_URL:-http://localhost:3010}
@@ -155,7 +156,7 @@ services:
extra_hosts: extra_hosts:
- "mirror:host-gateway" - "mirror:host-gateway"
args: args:
NODE_IMAGE: ${NODE_IMAGE:-171.22.25.73:8081/repository/docker-group/node:20-alpine} NODE_IMAGE: ${NODE_IMAGE:-171.22.25.73:8087/node:20-alpine}
NPM_REGISTRY: ${NPM_REGISTRY:-http://171.22.25.73:8081/repository/npm-group/} NPM_REGISTRY: ${NPM_REGISTRY:-http://171.22.25.73:8081/repository/npm-group/}
NEXT_PUBLIC_API_URL: ${NEXT_PUBLIC_API_URL:-http://localhost:5080} NEXT_PUBLIC_API_URL: ${NEXT_PUBLIC_API_URL:-http://localhost:5080}
NEXT_PUBLIC_SITE_URL: ${NEXT_PUBLIC_KOJA_URL:-http://localhost:3103} NEXT_PUBLIC_SITE_URL: ${NEXT_PUBLIC_KOJA_URL:-http://localhost:3103}
+2 -2
View File
@@ -1,5 +1,5 @@
ARG DOTNET_SDK_IMAGE=171.22.25.73:8081/repository/docker-group/dotnet/sdk:10.0 ARG DOTNET_SDK_IMAGE=171.22.25.73:8087/dotnet/sdk:10.0
ARG DOTNET_ASPNET_IMAGE=171.22.25.73:8081/repository/docker-group/dotnet/aspnet:10.0 ARG DOTNET_ASPNET_IMAGE=171.22.25.73:8087/dotnet/aspnet:10.0
FROM ${DOTNET_SDK_IMAGE} AS build FROM ${DOTNET_SDK_IMAGE} AS build
WORKDIR /src WORKDIR /src
+1 -1
View File
@@ -1,4 +1,4 @@
ARG NODE_IMAGE=171.22.25.73:8081/repository/docker-group/node:20-alpine ARG NODE_IMAGE=171.22.25.73:8087/node:20-alpine
FROM ${NODE_IMAGE} AS deps FROM ${NODE_IMAGE} AS deps
WORKDIR /app WORKDIR /app
+2 -2
View File
@@ -1,5 +1,5 @@
ARG DOTNET_SDK_IMAGE=171.22.25.73:8081/repository/docker-group/dotnet/sdk:10.0 ARG DOTNET_SDK_IMAGE=171.22.25.73:8087/dotnet/sdk:10.0
ARG DOTNET_ASPNET_IMAGE=171.22.25.73:8081/repository/docker-group/dotnet/aspnet:10.0 ARG DOTNET_ASPNET_IMAGE=171.22.25.73:8087/dotnet/aspnet:10.0
FROM ${DOTNET_SDK_IMAGE} AS build FROM ${DOTNET_SDK_IMAGE} AS build
WORKDIR /src WORKDIR /src
+2 -2
View File
@@ -1,8 +1,8 @@
{ {
"insecure-registries": [ "insecure-registries": [
"171.22.25.73:8081" "171.22.25.73:8087"
], ],
"registry-mirrors": [ "registry-mirrors": [
"http://171.22.25.73:8081" "http://171.22.25.73:8087"
] ]
} }
+1 -1
View File
@@ -1,4 +1,4 @@
ARG NODE_IMAGE=171.22.25.73:8081/repository/docker-group/node:20-alpine ARG NODE_IMAGE=171.22.25.73:8087/node:20-alpine
FROM ${NODE_IMAGE} AS deps FROM ${NODE_IMAGE} AS deps
WORKDIR /app WORKDIR /app
+1 -1
View File
@@ -1,4 +1,4 @@
ARG NODE_IMAGE=171.22.25.73:8081/repository/docker-group/node:20-alpine ARG NODE_IMAGE=171.22.25.73:8087/node:20-alpine
FROM ${NODE_IMAGE} AS deps FROM ${NODE_IMAGE} AS deps
WORKDIR /app WORKDIR /app
+1 -1
View File
@@ -1,4 +1,4 @@
ARG NODE_IMAGE=171.22.25.73:8081/repository/docker-group/node:20-alpine ARG NODE_IMAGE=171.22.25.73:8087/node:20-alpine
FROM ${NODE_IMAGE} AS deps FROM ${NODE_IMAGE} AS deps
WORKDIR /app WORKDIR /app