Pasa el nombre de la imagen a minúsculas para que Docker acepte la carpeta del servicio.

Un directorio como SALE-HITES-BFF deja de fallar el build por el formato del repositorio.
This commit is contained in:
2026-10-06 19:35:39 -03:00
parent fa125ed616
commit 2c727244df
3 changed files with 17 additions and 12 deletions
+1 -1
View File
@@ -20,7 +20,7 @@ To push every service in one project, pass that project's list file to
`./scripts/deploy-services.sh`. It runs `build-and-push.sh` once per path and `./scripts/deploy-services.sh`. It runs `build-and-push.sh` once per path and
reports any failures at the end. See `scripts/README.md` for the list format. reports any failures at the end. See `scripts/README.md` for the list format.
The script uses the last directory of the service location as the image name The script uses the last directory of the service location, lowercased, as the image name
and reads `version` from `pom.xml` for the local build tag (`1.0.0-SNAPSHOT` and reads `version` from `pom.xml` for the local build tag (`1.0.0-SNAPSHOT`
if there is no pom). It builds for `linux/amd64` and verifies the deploy on if there is no pom). It builds for `linux/amd64` and verifies the deploy on
the remote. the remote.
+6 -6
View File
@@ -8,7 +8,7 @@ Construye la imagen nativa de Quarkus y la envía al daemon Docker de un host re
### Qué hace el flujo ### Qué hace el flujo
1. Toma el nombre de la imagen de la última carpeta de la ubicación del servicio y lee `version` de [`pom.xml`](../pom.xml) para el tag, salvo que uses `--name` o `--tag`. Si no hay `pom.xml`, el tag es `1.0.0-SNAPSHOT`. 1. Toma el nombre de la imagen de la última carpeta de la ubicación del servicio, en minúsculas, y lee `version` de [`pom.xml`](../pom.xml) para el tag, salvo que uses `--name` o `--tag`. Si no hay `pom.xml`, el tag es `1.0.0-SNAPSHOT`. `--name` también se pasa a minúsculas.
2. Ejecuta `docker build` para la plataforma fija `linux/amd64` (útil si construyes desde un Mac arm64). Con `--type java` (el valor por defecto) usa [`src/main/docker/Dockerfile`](../src/main/docker/Dockerfile). Con `--type web` usa `Dockerfile` en la raíz del servicio. 2. Ejecuta `docker build` para la plataforma fija `linux/amd64` (útil si construyes desde un Mac arm64). Con `--type java` (el valor por defecto) usa [`src/main/docker/Dockerfile`](../src/main/docker/Dockerfile). Con `--type web` usa `Dockerfile` en la raíz del servicio.
3. Ejecuta `docker pussh` hacia el destino SSH indicado. 3. Ejecuta `docker pussh` hacia el destino SSH indicado.
4. Comprueba por SSH que la imagen existe en el remoto (salvo `--no-verify`). 4. Comprueba por SSH que la imagen existe en el remoto (salvo `--no-verify`).
@@ -60,18 +60,18 @@ Ayuda integrada (en inglés):
|--------|-------------| |--------|-------------|
| `--remote TARGET` | Destino SSH: `usuario@host[:puerto]` o un alias definido en `~/.ssh/config` (sin `@`). | | `--remote TARGET` | Destino SSH: `usuario@host[:puerto]` o un alias definido en `~/.ssh/config` (sin `@`). |
**Identidad de la imagen** (el nombre es la última carpeta del servicio; el tag sale de `pom.xml` si existe) **Identidad de la imagen** (el nombre es la última carpeta del servicio, en minúsculas; el tag sale de `pom.xml` si existe)
| Opción | Descripción | | Opción | Descripción |
|--------|-------------| |--------|-------------|
| `--name NAME` | Nombre del repositorio de la imagen. | | `--name NAME` | Nombre del repositorio de la imagen. Se guarda en minúsculas. |
| `--tag TAG` | Tag de la imagen. | | `--tag TAG` | Tag de la imagen. |
**Directorio de trabajo** **Directorio de trabajo**
| Opción | Descripción | | Opción | Descripción |
|--------|-------------| |--------|-------------|
| `--project-dir PATH` | Raíz del servicio. El nombre de la imagen es su última carpeta. | | `--project-dir PATH` | Raíz del servicio. El nombre de la imagen es su última carpeta, en minúsculas. |
| `PROJECT_DIR` | Misma función vía entorno. | | `PROJECT_DIR` | Misma función vía entorno. |
**Build** **Build**
@@ -169,7 +169,7 @@ ssh deploy@prod.example.com \
"docker run -d --name <carpeta> --restart unless-stopped -p 8080:8080 <carpeta>:<version>" "docker run -d --name <carpeta> --restart unless-stopped -p 8080:8080 <carpeta>:<version>"
``` ```
Sustituye `<carpeta>` por la última carpeta de la ubicación del servicio (o el valor de `--name`) y `<version>` por el tag del build (el de `pom.xml`, `1.0.0-SNAPSHOT` si no hay POM, o el de `--tag`). Sustituye `<carpeta>` por la última carpeta de la ubicación del servicio en minúsculas (o el valor de `--name`, también en minúsculas) y `<version>` por el tag del build (el de `pom.xml`, `1.0.0-SNAPSHOT` si no hay POM, o el de `--tag`).
### Solución de problemas ### Solución de problemas
@@ -219,7 +219,7 @@ Formato del archivo: una ruta por línea y, si hace falta, un segundo campo `jav
./portal web ./portal web
``` ```
`java` usa `src/main/docker/Dockerfile`. `web` usa `Dockerfile` en la raíz del servicio. El nombre de la imagen es la última carpeta de esa ruta. El tag sale de `pom.xml` si existe; si no, es `1.0.0-SNAPSHOT`. `java` usa `src/main/docker/Dockerfile`. `web` usa `Dockerfile` en la raíz del servicio. El nombre de la imagen es la última carpeta de esa ruta, en minúsculas. El tag sale de `pom.xml` si existe; si no, es `1.0.0-SNAPSHOT`.
Se reenvían a cada servicio: `--ssh-key`, `--ssh-config`, `--skip-build`, `--no-verify` y `--cleanup`, más el `--type` de esa línea. No se aceptan `--name`, `--tag`, `--project-dir` ni `--type`. Se reenvían a cada servicio: `--ssh-key`, `--ssh-config`, `--skip-build`, `--no-verify` y `--cleanup`, más el `--type` de esa línea. No se aceptan `--name`, `--tag`, `--project-dir` ni `--type`.
+10 -5
View File
@@ -67,14 +67,14 @@ Required:
Image identity: Image identity:
--name NAME Image repository name (default: last directory of --name NAME Image repository name (default: last directory of
the service location) the service location, lowercased)
--tag TAG Local build tag (pom.xml version by default, or --tag TAG Local build tag (pom.xml version by default, or
1.0.0-SNAPSHOT if there is no pom.xml). On the 1.0.0-SNAPSHOT if there is no pom.xml). On the
remote only :latest and vYYYY.MM.DD-HH.MM (UTC). remote only :latest and vYYYY.MM.DD-HH.MM (UTC).
Working directory (defaults to the parent of the script's directory): Working directory (defaults to the parent of the script's directory):
--project-dir PATH Service root. The image name is its last directory --project-dir PATH Service root. The image name is its last directory,
(override with env PROJECT_DIR) lowercased (override with env PROJECT_DIR)
Build options: Build options:
--type java|web Dockerfile location. java (default): --type java|web Dockerfile location. java (default):
@@ -142,6 +142,11 @@ resolve_dockerfile() {
esac esac
} }
# Docker repository names must be lowercase. ${var,,} needs bash 4+.
lowercase() {
printf '%s' "$1" | tr '[:upper:]' '[:lower:]'
}
# Last directory of the service location (cwd must already be that directory). # Last directory of the service location (cwd must already be that directory).
image_name_from_location() { image_name_from_location() {
local dir local dir
@@ -149,7 +154,7 @@ image_name_from_location() {
dir="${dir%/}" dir="${dir%/}"
[[ -n "$dir" && "$dir" != "/" ]] \ [[ -n "$dir" && "$dir" != "/" ]] \
|| die "Cannot derive image name from project directory." || die "Cannot derive image name from project directory."
printf '%s' "${dir##*/}" lowercase "${dir##*/}"
} }
require() { require() {
@@ -408,7 +413,7 @@ push_via_registry_tunnel() {
while [[ $# -gt 0 ]]; do while [[ $# -gt 0 ]]; do
case "$1" in case "$1" in
--remote) REMOTE="$2"; shift 2 ;; --remote) REMOTE="$2"; shift 2 ;;
--name) IMAGE_NAME="$2"; shift 2 ;; --name) IMAGE_NAME="$(lowercase "$2")"; shift 2 ;;
--tag) IMAGE_TAG="$2"; shift 2 ;; --tag) IMAGE_TAG="$2"; shift 2 ;;
--ssh-key) SSH_KEY="$2"; shift 2 ;; --ssh-key) SSH_KEY="$2"; shift 2 ;;
--ssh-config) SSH_CONFIG="$2"; shift 2 ;; --ssh-config) SSH_CONFIG="$2"; shift 2 ;;