El nombre de la imagen sale de la carpeta del servicio y el Dockerfile depende de si es java o web.
Así se puede desplegar sin pom.xml y ubicar el Dockerfile en la raíz cuando el servicio es web.
This commit is contained in:
+12
-11
@@ -8,8 +8,8 @@ Construye la imagen nativa de Quarkus y la envía al daemon Docker de un host re
|
||||
|
||||
### Qué hace el flujo
|
||||
|
||||
1. Lee `artifactId` y `version` de [`pom.xml`](../pom.xml) para formar la referencia de imagen (`nombre:tag`), salvo que uses `--name` o `--tag`.
|
||||
2. Ejecuta `docker build` con [`src/main/docker/Dockerfile`](../src/main/docker/Dockerfile) para la plataforma fija `linux/amd64` (útil si construyes desde un Mac arm64).
|
||||
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`.
|
||||
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.
|
||||
4. Comprueba por SSH que la imagen existe en el remoto (salvo `--no-verify`).
|
||||
5. Muestra un comando `docker run` sugerido para arrancar el contenedor en el remoto.
|
||||
@@ -31,7 +31,7 @@ curl -fsSL https://raw.githubusercontent.com/psviderski/unregistry/main/docker-p
|
||||
chmod +x ~/.docker/cli-plugins/docker-pussh
|
||||
```
|
||||
|
||||
`xmllint` es opcional: si no está en el PATH, el script obtiene `artifactId` y `version` del POM con `grep`/`sed`.
|
||||
`xmllint` es opcional: si no está en el PATH y existe `pom.xml`, el script obtiene `version` del POM con `grep`/`sed`.
|
||||
|
||||
### Invocación
|
||||
|
||||
@@ -60,7 +60,7 @@ Ayuda integrada (en inglés):
|
||||
|--------|-------------|
|
||||
| `--remote TARGET` | Destino SSH: `usuario@host[:puerto]` o un alias definido en `~/.ssh/config` (sin `@`). |
|
||||
|
||||
**Identidad de la imagen** (por defecto desde `pom.xml`)
|
||||
**Identidad de la imagen** (el nombre es la última carpeta del servicio; el tag sale de `pom.xml` si existe)
|
||||
|
||||
| Opción | Descripción |
|
||||
|--------|-------------|
|
||||
@@ -71,13 +71,14 @@ Ayuda integrada (en inglés):
|
||||
|
||||
| Opción | Descripción |
|
||||
|--------|-------------|
|
||||
| `--project-dir PATH` | Raíz del proyecto (debe contener `pom.xml`). |
|
||||
| `--project-dir PATH` | Raíz del servicio. El nombre de la imagen es su última carpeta. |
|
||||
| `PROJECT_DIR` | Misma función vía entorno. |
|
||||
|
||||
**Build**
|
||||
|
||||
| Opción | Descripción |
|
||||
|--------|-------------|
|
||||
| `--type` | Dónde está el Dockerfile. `java` (por defecto): `src/main/docker/Dockerfile`. `web`: `Dockerfile` en la raíz del servicio. |
|
||||
| `--skip-build` | No construye; solo hace `pussh` de una imagen que ya exista en local. La plataforma de build sigue siendo `linux/amd64` cuando no se omite el build. |
|
||||
|
||||
**SSH** (se reenvían a `docker pussh` y, en la verificación, a `ssh`)
|
||||
@@ -165,10 +166,10 @@ Al terminar con éxito, el script sugiere algo equivalente a:
|
||||
|
||||
```shell
|
||||
ssh deploy@prod.example.com \
|
||||
"docker run -d --name <artifactId> --restart unless-stopped -p 8080:8080 <artifactId>:<version>"
|
||||
"docker run -d --name <carpeta> --restart unless-stopped -p 8080:8080 <carpeta>:<version>"
|
||||
```
|
||||
|
||||
Sustituye `<artifactId>` y `<version>` por los valores que haya usado el build (los del POM o los de `--name` / `--tag`).
|
||||
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`).
|
||||
|
||||
### Solución de problemas
|
||||
|
||||
@@ -210,16 +211,16 @@ No hay lista por defecto. `--services` es obligatorio, así cada proyecto puede
|
||||
./scripts/deploy-services.sh --remote prod --services /srv/proyecto-b/services.txt --skip-build
|
||||
```
|
||||
|
||||
Formato del archivo: una ruta por línea. Se ignoran las líneas vacías y las que empiezan por `#`. Una ruta relativa se resuelve desde el directorio del archivo de lista, no desde el directorio donde lanzas el script.
|
||||
Formato del archivo: una ruta por línea y, si hace falta, un segundo campo `java` o `web`. Si el tipo falta, es `java`. Se ignoran las líneas vacías y las que empiezan por `#`. Una ruta relativa se resuelve desde el directorio del archivo de lista, no desde el directorio donde lanzas el script.
|
||||
|
||||
```text
|
||||
# /srv/proyecto-a/services.txt
|
||||
./api
|
||||
./worker
|
||||
./portal web
|
||||
```
|
||||
|
||||
Cada ruta es la raíz de un servicio Quarkus (`pom.xml` y `src/main/docker/Dockerfile`). El nombre y el tag de la imagen salen del `pom.xml` de ese servicio.
|
||||
`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`.
|
||||
|
||||
Se reenvían a cada servicio: `--ssh-key`, `--ssh-config`, `--skip-build`, `--no-verify` y `--cleanup`. No se aceptan `--name`, `--tag` ni `--project-dir`.
|
||||
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`.
|
||||
|
||||
Ctrl+C interrumpe el lote. Ayuda: `./scripts/deploy-services.sh --help`.
|
||||
|
||||
Reference in New Issue
Block a user