Skip to content

Commit 398dec9

Browse files
committed
Contenedores: ARG, ENV, ENTRY
1 parent bcee149 commit 398dec9

14 files changed

Lines changed: 367 additions & 88 deletions

File tree

demos/contenedores/entorno/.env

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
VARIABLE="Vengo del archivo ENV"
1+
# VARIABLE="Vengo del archivo ENV"

demos/contenedores/entorno/Dockerfile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,15 @@
22
# imagen de referencia
33
FROM python:alpine
44

5+
56
# directorio de trabajo (se crea automáticamente)
67
WORKDIR /code
78

89
# copia de rutinas al directorio de trabajo
910
COPY demo/ ./
1011

12+
# variable de entorno local
13+
ENV VARIABLE_PYTHON="Me definieron en el Dockerfile"
14+
1115
# comandos
1216
CMD ["python", "main.py"]

demos/contenedores/entorno/compose.yml

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,31 +7,40 @@ services:
77
build: .
88
image: demo_entornos
99

10+
11+
12+
1013
# cada contenedor pone a prueba distintas interpolaciones
11-
entornos:
14+
entornos_interna:
1215
image: demo_entornos
13-
environment:
14-
VARIABLE_PYTHON: "${VARIABLE}"
1516
depends_on:
1617
crear_imagen:
1718
condition: service_completed_successfully
1819

19-
entornos_default:
20+
entornos_exterior:
2021
image: demo_entornos
2122
environment:
22-
VARIABLE_PYTHON: "${VARIABLE:-'valor predefinido'}"
23+
VARIABLE_PYTHON: "${VARIABLE}"
2324
depends_on:
2425
crear_imagen:
2526
condition: service_completed_successfully
2627

27-
entornos_error:
28+
entornos_default:
2829
image: demo_entornos
2930
environment:
30-
VARIABLE_PYTHON: "${VARIABLE?'Error: variable no inicializada'}"
31+
VARIABLE_PYTHON: "${VARIABLE:-'valor predefinido'}"
3132
depends_on:
3233
crear_imagen:
3334
condition: service_completed_successfully
3435

36+
# entornos_error:
37+
# image: demo_entornos
38+
# environment:
39+
# VARIABLE_PYTHON: "${VARIABLE?'Error: variable no inicializada'}"
40+
# depends_on:
41+
# crear_imagen:
42+
# condition: service_completed_successfully
43+
3544
entornos_sustituir:
3645
image: demo_entornos
3746
environment:

docs/blog/posts/v2.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,12 @@ social:
1818
- Anexo de permisos de usuario movido desde Pathlib;
1919

2020
- Sección [Contenedores](../../contenedores/index.md):
21+
- Sobreescritura de comandos (`CMD` y `ENTRYPOINT`) reexplicados.
22+
- Argumentos de contrucción (`ARG`) explicados.
23+
- Variables de entorno explicadas.
2124
- Networks explicadas.
2225
- Port mapping agregado.
26+
- Variables de entorno reexplicadas.
2327
- Contenidos básicos revisados y reordenados.
2428
- Nuevos demos.
2529

@@ -30,6 +34,7 @@ social:
3034
- Empaquetado agregado (resumido);
3135
- Agregado de dependencias mejorado.
3236

37+
- Sección Paralelismo renombrada como [Ejecución paralela](../../paralelismo/index.md)
3338
<!-- mas -->
3439

3540
## Versión 2.9

docs/contenedores/args.md

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
---
2+
status: new
3+
date:
4+
created: 2025-09-23
5+
updated: 2025-09-23
6+
---
7+
8+
9+
# Argumentos de construcción
10+
11+
12+
Dentro del Dockerfile
13+
se permite pasar argumentos
14+
para modificar los parámetros
15+
de construcción de las imágenes.
16+
Estos argumentos son borrados
17+
cuando la construcción está completada.
18+
19+
20+
## Creación
21+
22+
La cláusula reservada
23+
para crear los argumentos de imagen es `ARG`.
24+
Tras ella se define el nombre de argumento
25+
y se le asigna un valor:
26+
27+
```Dockerfile title="Dockerfile - Argumentos"
28+
ARG ARGUMENTO=valor_default
29+
```
30+
31+
Un uso habitual
32+
es la elección de la versión
33+
de una imagen de referencia.
34+
Por ejemplo se puede definir
35+
el argumento `TAG_IMAGEN`
36+
para elegir el *tag* de la versión de Python:
37+
38+
```Dockerfile title="Dockerfile - Tags como argumentos"
39+
# definicion de argumento
40+
ARG TAG_IMAGEN=3.13-alpine3.21
41+
# asignacion como default
42+
FROM python:${TAG_IMAGEN}
43+
```
44+
45+
entonces la versión elegida
46+
para la contrucción de la imagen final
47+
será el intérprete 3.13
48+
instalada en Alpine Linux
49+
salvo indicación contraria.
50+
51+
52+
## Modificación
53+
54+
Con el pàrámetro
55+
`args` del campo `build`
56+
se elige un nuevo valor
57+
para el arguimento.
58+
59+
La asignación
60+
se puede hacer
61+
por mapeo:
62+
63+
```yaml title="compose.yml - Argumentos" hl_lines="6-7"
64+
services:
65+
66+
contenedor:
67+
build:
68+
context: . # ruta al Dockerfile
69+
args:
70+
ARGUMENTO: valor_custom
71+
```
72+
73+
La asignación
74+
se puede hacer
75+
también como lista:
76+
77+
```yaml title="compose.yml - Argumentos" hl_lines="6-7"
78+
services:
79+
80+
contenedor:
81+
build:
82+
context: . # ruta al Dockerfile
83+
args:
84+
- ARGUMENTO=valor_custom
85+
```
86+
87+
En ambos casos se necesita indicar
88+
la ruta al Dockerfile
89+
con el campo `context`.
90+
91+
Retomando el ejemplo previo,
92+
para elegir como referencia
93+
la imagen reducida de Python 3.13
94+
instalada en Debian Trixie:
95+
96+
```yaml
97+
services:
98+
99+
contenedor_python:
100+
build:
101+
context: . # ruta al Dockerfile
102+
args:
103+
TAG_IMAGEN: 3.13-slim-trixie
104+
```
105+
106+
107+
108+
109+

docs/contenedores/comandos.md

Lines changed: 57 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,90 @@
11
---
2-
status: deprecated
2+
status: new
33
date:
44
created: 2025-07-01
55
updated: 2025-08-26
66
---
77

88

99

10-
# Cambiar comandos
10+
# Fijar y modificar comandos
11+
12+
En esta sección se ve cómo
13+
se pueden cambiar los comandos elegidos
14+
para las imágenes
15+
desde el archivo `compose.yml`
16+
y también como los comandos
17+
pueden ser fijados
18+
desde el Dockerfile.
1119

12-
En esta sección se ve cómo se pueden
13-
cambiar los comandos elegidos en el archivo Dockerfile
14-
y también como éstos pueden ser fijados.
1520

16-
## Elegir comandos
1721

22+
## Elegir comandos
23+
<!--
1824
El comando a ser ejecutado por el contenedor
1925
se puede reemplazar desde el archivo `compose.yml`
2026
con ayuda del parámetro `command`.
2127
22-
Algunos ejemplos:
28+
-->
29+
30+
El parámetro `command` del archivo `compose.yml`
31+
sirve para sobreescribir el comando definido
32+
con la cláusula `CMD` del Dockerfile.
33+
34+
En el ejemplo del [primer despliegue](despliegue_demo.md)
35+
el demo se ejecuta desde la *sell* Bash
36+
con la sentencia:
37+
38+
```bash title="Bash - ejecución de rutina"
39+
python contar.py 4
40+
```
41+
42+
El comando fue adaptado al Dockerfile
43+
con la cláusula `CMD`.
44+
45+
```Dockerfile title="Dockerfile - comando sobreescribible"
46+
# comando, opciones y argumentos (sobreescribibles)
47+
CMD ["python", "contar.py", "4"]
48+
```
49+
50+
Este comando puede ser ignorado
51+
definiendo el campo `command`.
52+
Por ejemplo, para cambiar la cuenta final
53+
de 4 a 10:
2354

55+
```yaml hl_lines="5" title="compose.yml - sobreescribir cuenta"
56+
services:
2457

25-
```yaml hl_lines="5" title="compose.yml - sobreescribir comandos"
58+
demo-contador:
59+
build: .
60+
command: "python contar.py 10" # cuenta máxima alterada
61+
```
62+
63+
64+
También se puede ignorar la rutina interna de la imagen,
65+
por ejemplo para consultar
66+
la versión del intérprete Python instalada:
67+
68+
```yaml hl_lines="5" title="compose.yml - omitir rutina interna"
2669
services:
2770

2871
demo-contador:
2972
build: .
3073
command: "python --version" # versión de Python
3174
```
3275
76+
También se pueden ejecutar otros programas incluidos en la imagen
77+
por ejemplo para conocer qué versión del kernel Linux
78+
se incluyó internamente:
3379
34-
```yaml hl_lines="5" title="compose.yml - sobreescribir comandos"
80+
```yaml hl_lines="5" title="compose.yml - cambiar de comando"
3581
services:
3682

3783
demo-contador:
3884
build: .
3985
command: "uname -a" # info sobre el kernel usado
4086
```
4187
42-
43-
4488
## Fijar comandos
4589
4690
@@ -56,7 +100,7 @@ se delega en la cláusula `CMD`.
56100

57101
Por ejemplo, si el comando original es:
58102

59-
```Dockerfile title="Dcokerfile - comando sobreescribible"
103+
```Dockerfile title="Dockerfile - comando sobreescribible"
60104
# comando, opciones y argumentos (sobreescribibles)
61105
CMD ["python", "contar.py", "4"]
62106
```
@@ -74,7 +118,7 @@ CMD ["4"]
74118
y en el archivo Compose sólo se podrán asignar
75119
los argumentos de la rutina:
76120

77-
```yaml hl_lines="5" title="compose.yml - sobreescribir argumentos"
121+
```yaml hl_lines="5" title="compose.yml - comando fijo"
78122
services:
79123
80124
demo-contador:

docs/contenedores/compose.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
date:
33
created: 2025-07-01
44
updated: 2025-08-26
5-
status: new
65
---
76

87
# Compose
@@ -56,6 +55,8 @@ con otros proyectos
5655
ni tampoco
5756
con el sistema anfitrión.
5857

58+
Este es un esquema típico:
59+
5960
```mermaid
6061
---
6162
title: "Servicios - idea básica"

docs/contenedores/dependencia.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
---
2-
status: new
32
date:
43
created: 2025-07-01
54
updated: 2025-09-12

0 commit comments

Comments
 (0)