Skip to content

Commit e5800bd

Browse files
committed
Merge branch 'master' into minor-fixes-eks-terraform
2 parents ae68076 + 8f032bd commit e5800bd

File tree

257 files changed

+15753
-30701
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

257 files changed

+15753
-30701
lines changed

.devcontainer/compose.yml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
services:
2+
app:
3+
image: mcr.microsoft.com/devcontainers/base:jammy
4+
volumes:
5+
- ../..:/workspaces:cached
6+
command: sleep infinity
7+
networks:
8+
- lemoncode
9+
ports:
10+
- "5010:5010"
11+
12+
db:
13+
image: mcr.microsoft.com/azure-sql-edge
14+
restart: unless-stopped
15+
environment:
16+
SA_PASSWORD: P@ssword
17+
ACCEPT_EULA: Y
18+
networks:
19+
- lemoncode
20+
21+
networks:
22+
lemoncode:

.devcontainer/devcontainer.json

Lines changed: 37 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,50 @@
11
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
22
// README at: https://github.com/devcontainers/templates/tree/main/src/ubuntu
33
{
4-
"name": "Lemoncode Dev Environment",
4+
"name": "🍋💻 Lemoncode Dev Environment",
55
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
6-
"image": "mcr.microsoft.com/devcontainers/base:jammy",
6+
// "image": "mcr.microsoft.com/devcontainers/base:jammy",
7+
"dockerComposeFile": "compose.yml",
8+
"service": "app",
9+
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",
710
"features": {
8-
"ghcr.io/devcontainers/features/azure-cli:1": {}
11+
"ghcr.io/devcontainers/features/azure-cli:1": {
12+
"version": "latest"
13+
},
14+
"ghcr.io/devcontainers/features/dotnet:2": {
15+
"version": "8.0"
16+
},
17+
"ghcr.io/devcontainers-extra/features/kubectl-asdf:2": {
18+
"version": "latest"
19+
},
20+
"ghcr.io/devcontainers/features/github-cli:1": {
21+
"installDirectlyFromGitHubRelease": true,
22+
"version": "latest"
23+
},
24+
"ghcr.io/devcontainers/features/node:1": {
25+
"nodeGypDependencies": true,
26+
"installYarnUsingApt": true,
27+
"version": "lts",
28+
"pnpmVersion": "latest",
29+
"nvmVersion": "latest"
30+
},
31+
"ghcr.io/devcontainers/features/docker-in-docker:2": {
32+
"moby": true,
33+
"azureDnsAutoDetection": true,
34+
"installDockerBuildx": true,
35+
"installDockerComposeSwitch": true,
36+
"version": "latest",
37+
"dockerDashComposeVersion": "latest"
38+
}
939
},
1040
"customizations": {
1141
"vscode": {
1242
"extensions": [
13-
"humao.rest-client"
43+
"humao.rest-client",
44+
"GitHub.copilot-chat",
45+
"ms-dotnettools.csdevkit",
46+
"ms-vscode.PowerShell"
1447
]
1548
}
1649
}
17-
18-
// Features to add to the dev container. More info: https://containers.dev/features.
19-
// "features": {},
20-
21-
// Use 'forwardPorts' to make a list of ports inside the container available locally.
22-
// "forwardPorts": [],
23-
24-
// Use 'postCreateCommand' to run commands after the container is created.
25-
// "postCreateCommand": "uname -a",
26-
27-
// Configure tool-specific properties.
28-
// "customizations": {},
29-
30-
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
31-
// "remoteUser": "root"
3250
}

.gitignore

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,33 @@ private.readme.md
3636
.vagrant
3737
01-contenedores/lemoncode-challenge/dotnet-stack/backend/obj/Debug/netcoreapp3.1/backend.assets.cache
3838
01-contenedores/lemoncode-challenge/dotnet-stack/backend/obj/Debug/netcoreapp3.1/backend.GeneratedMSBuildEditorConfig.editorconfig
39+
40+
41+
# Gradle
42+
.gradle
43+
44+
# Build results
45+
[Dd]ebug/
46+
[Dd]ebugPublic/
47+
[Rr]elease/
48+
[Rr]eleases/
49+
x64/
50+
x86/
51+
build/
52+
bld/
53+
[Bb]in/
54+
# Ignorar el directorio obj en cualquier nivel
55+
**/[Oo]bj/
56+
[Oo]ut/
57+
msbuild.log
58+
msbuild.err
59+
msbuild.wrn
60+
01-contenedores/lemoncode-challenge/dotnet-stack/backend/obj/Debug/netcoreapp3.1/backend.AssemblyInfo.cs
61+
01-contenedores/lemoncode-challenge/dotnet-stack/backend/obj/Debug/netcoreapp3.1/backend.AssemblyInfoInputs.cache
62+
01-contenedores/lemoncode-challenge/dotnet-stack/backend/obj/Debug/netcoreapp3.1/backend.AssemblyInfo.cs
63+
01-contenedores/lemoncode-challenge/dotnet-stack/backend/obj/Debug/netcoreapp3.1/backend.GeneratedMSBuildEditorConfig.editorconfig
64+
01-contenedores/lemoncode-challenge/dotnet-stack/backend/obj/Debug/netcoreapp3.1/backend.AssemblyInfo.cs
65+
66+
# Challenge solutions for instructors only
67+
01-contenedores/lemoncode-challenge/**/CHALLENGE.md
68+
01-contenedores/lemoncode-challenge/LAB_CONTENEDORES.md

00-fundamentos-linux/01-entornos-linux/01-gestion-de-paquetes.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ Ejemplos de gestores de paquetes:
1717
- `pacman` - utilizados en sistemas basados en Arch (`yay` y derivados para el repositorio AUR).
1818
- `rpm`, `yum` y su sucesora `dnf` - utilizados en sistemas basados en Red Hat Enterprise Linux.
1919
- `nix` - gestor de paquetes sin distribución específica
20-
- `portage` - utilizados en sistemas basadaos en Gentoo
20+
- `portage` - utilizados en sistemas basados en Gentoo
2121

2222
Las distribuciones que utilizan gestores de paquetes obtienen sus paquetes de **repositorios**. Los repositorios son servidores públicos cuyo objetivo es almacenar paquetes a disposición de los usuarios. Existen repositorios oficiales y no oficiales. Los paquetes que provienen de repositorios oficiales son mantenidos por las entidades que crearon la distribución. Los repositorios no oficiales son mantenidos por la comunidad para aportar paquetes que los creadores de la distribución no admiten como paquetes core por diversos motivos (por ejemplo, filosofía OpenSource).
2323

00-fundamentos-linux/01-entornos-linux/02-gestion-de-entorno.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -188,9 +188,9 @@ El comando `ps` muestra un reporte de los procesos actuales del sistema.
188188
Tiene una gran variedad de opciones. Varios ejemplos de combinaciones de flags:
189189

190190
- `ps aux` - Muestra información detallada de todos los procesos
191-
- `ps -fu <username> - Lista los procesos de varios usuarios separados por coma.
192-
- `ps --forest -fC <command> - Lista los procesos relacionados con el comando en árbol.
193-
- `ps -p <pid> - Lista los procesos en base al PID o PIDs separados por coma
191+
- `ps -fu <username>` - Lista los procesos de varios usuarios separados por coma.
192+
- `ps --forest -fC <command>` - Lista los procesos relacionados con el comando en árbol.
193+
- `ps -p <pid>` - Lista los procesos en base al PID o PIDs separados por coma
194194

195195
```
196196
$ ps -fu vagrant
@@ -217,7 +217,7 @@ Para enviar señales a un proceso podemos escribirlo de varias formas:
217217
- `-<ID-SEÑAL>`: `kill -15 229`
218218
- `-SIG<SEÑAL>`: `kill -SIGTERM 229`
219219
- `<SEÑAL>`: `kill SIGTERM 229`
220-
- `-s <SEÑAL>`: kill -s SIGTERM 229
220+
- `-s <SEÑAL>`: `kill -s SIGTERM 229`
221221

222222
Para ver el objetivo de cada señal podemos verlos con `man 7 signal`. También un programa puede actuar de una forma u otra dependiendo de la señal que enviemos, por ejemplo, la señal `SIGHUP` en un proceso Nginx recarga su configuración o `SIGQUIT` espera a que todas las conexiones establecidas sean cerradas antes de abortar el proceso, a diferencia de `SIGTERM` que corta las conexiones y sale directamente.
223223

00-fundamentos-linux/02-trabajando-con-la-cli/02-introduccion-scripting.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,6 @@ $ echo Mi usuario es USER
115115
Mi usuario es USER
116116
```
117117

118-
> También podemos utilizar el comando `printenv <varname>` para mostrar el contenido de una variable. Sin argumentos mostrará t
118+
> También podemos utilizar el comando `printenv <varname>` para mostrar el contenido de una variable. Sin argumentos mostrará todas
119119
120120
En apartados posteriores de _scripting_ veremos cómo trabajar con variables.

01-contenedores/README.md

Lines changed: 121 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,75 @@
1-
# Módulo 2 - Contenedores Docker
2-
3-
## Agenda
1+
# Módulo 01 - Contenedores Docker 📦🐳
2+
3+
¡Hola lemoncoder 🍋👩🏼‍💻🧑🏽‍💻! Bienvenid@ al módulo de contenedores Docker, donde aprenderás desde los conceptos básicos hasta técnicas avanzadas de contenerización y orquestación con Docker Compose y Docker Swarm.
4+
5+
## 📋 Índice del Contenido
6+
7+
### 📁 Estructura del Directorio
8+
9+
- **[contenedores-i/](./contenedores-i/)** - Día I: Introducción a Docker
10+
- **[contenedores-ii/](./contenedores-ii/)** - Día II: Trabajando con imágenes
11+
- **[contenedores-iii/](./contenedores-iii/)** - Día III: Contenerización de aplicaciones
12+
- **[contenedores-iv/](./contenedores-iv/)** - Día IV: Almacenamiento y monitorización
13+
- **[contenedores-v/](./contenedores-v/)** - Día V: Networking
14+
- **[contenedores-vi/](./contenedores-vi/)** - Día VI: Docker Compose y Docker Swarm
15+
- **[lemoncode-challenge/](./lemoncode-challenge/)** - 🏆 Laboratorio final y desafíos
16+
17+
### 🎯 Contenido por Directorio
18+
19+
#### [`contenedores-i/`](./contenedores-i/) - Fundamentos Docker
20+
- **README.md**: Guía completa del Día I
21+
- **imagenes/**: Recursos visuales y diagramas
22+
- **Contenido**: Instalación, primeros comandos, gestión básica de contenedores
23+
24+
#### [`contenedores-ii/`](./contenedores-ii/) - Gestión de Imágenes
25+
- **README.md**: Guía completa del Día II
26+
- **Dockerfile**: Ejemplos de construcción de imágenes
27+
- **deberes-ii.sh**: Script con ejercicios prácticos
28+
- **web/**: Aplicación de ejemplo para contenerizar
29+
- **imagenes/**: Recursos visuales
30+
31+
#### [`contenedores-iii/`](./contenedores-iii/) - Contenerización Avanzada
32+
- **README.md**: Guía completa del Día III
33+
- **doom-web/**: Ejemplo práctico de aplicación web
34+
- **imagenes/**: Recursos visuales
35+
- **Contenido**: Dockerfiles multi-stage, buenas prácticas
36+
37+
#### [`contenedores-iv/`](./contenedores-iv/) - Persistencia y Monitoreo
38+
- **README.md**: Guía completa del Día IV
39+
- **web-content/**: Contenido para ejemplos de volúmenes
40+
- **imagenes/**: Recursos visuales
41+
- **Contenido**: Volúmenes, bind mounts, monitoring con Prometheus/Grafana
42+
43+
#### [`contenedores-v/`](./contenedores-v/) - Redes Docker
44+
- **contenedores-v.sh**: Comandos y ejemplos prácticos
45+
- **deberes-v.sh**: Ejercicios de networking
46+
- **Dockerfile**: Ejemplos para testing de redes
47+
- **01-load-balancer-host/**: Configuración de load balancer modo host
48+
- **02-load-balancer-user-define-networks/**: Load balancer con redes personalizadas
49+
50+
#### [`contenedores-vi/`](./contenedores-vi/) - Orquestación
51+
- **contenedores-vi.sh**: Comandos Docker Compose y Swarm
52+
- **deberes-vi.sh**: Ejercicios de orquestación
53+
- **docker-compose.yml**: Ejemplos de aplicaciones multi-contenedor
54+
- **docker-compose-extension/**: Configuraciones avanzadas
55+
- **my-app/**: Aplicación de ejemplo completa
56+
- **stacks/**: Ejemplos de Docker Stacks para Swarm
57+
58+
#### [`lemoncode-challenge/`](./lemoncode-challenge/) - 🏆 Laboratorio Final
59+
- **README.md**: Instrucciones del challenge
60+
- **dotnet-stack/**: Stack completo con backend .NET
61+
- **node-stack/**: Stack completo con backend Node.js
62+
- **images/**: Recursos del laboratorio
63+
- **Contenido**: Aplicación completa de 3 capas para dockerizar
64+
65+
## 🚀 Cómo usar este contenido
66+
67+
1. **Sigue el orden**: Los días están diseñados para construir conocimiento progresivamente
68+
2. **Practica**: Cada directorio incluye ejercicios hands-on
69+
3. **Experimenta**: Usa los scripts `.sh` para explorar comandos
70+
4. **Completa el challenge**: El laboratorio final integra todo lo aprendido
71+
72+
## 📚 Agenda Detallada
473

574
### Día I: Introducción a Docker
675

@@ -222,4 +291,52 @@
222291
#### Chuleta de comandos
223292
#### Ejercicios
224293

225-
### Laboratorio de Docker
294+
## 🎓 Laboratorio Final - Lemoncode Challenge
295+
296+
El [`lemoncode-challenge/`](./lemoncode-challenge/) contiene un ejercicio integrador donde pondrás en práctica todo lo aprendido:
297+
298+
### 🎯 Objetivo
299+
Dockerizar una aplicación completa de 3 capas:
300+
- **Frontend**: Aplicación web en Node.js
301+
- **Backend**: API REST (puedes elegir entre .NET o Node.js)
302+
- **Base de datos**: MongoDB para persistencia
303+
304+
### 📋 Requisitos técnicos
305+
- Crear red personalizada `lemoncode-challenge`
306+
- Configurar comunicación entre servicios
307+
- Implementar persistencia con volúmenes
308+
- Exponer frontend en puerto 8080
309+
- Poblar base de datos con estructura específica
310+
311+
### 💼 Stacks disponibles
312+
- **`dotnet-stack/`**: Backend en .NET Core
313+
- **`node-stack/`**: Backend en Node.js
314+
315+
## 🛠️ Herramientas y Comandos Principales
316+
317+
### Scripts de práctica incluidos:
318+
- **`contenedores-v.sh`**: Comandos de networking
319+
- **`deberes-v.sh`**: Ejercicios de redes
320+
- **`contenedores-vi.sh`**: Docker Compose y Swarm
321+
- **`deberes-vi.sh`**: Ejercicios de orquestación
322+
- **`deberes-ii.sh`**: Ejercicios de imágenes
323+
324+
### Tecnologías cubiertas:
325+
- **Docker Engine**: Gestión de contenedores
326+
- **Docker Images**: Creación y gestión de imágenes
327+
- **Docker Networks**: Comunicación entre contenedores
328+
- **Docker Volumes**: Persistencia de datos
329+
- **Docker Compose**: Aplicaciones multi-contenedor
330+
- **Docker Swarm**: Orquestación y clustering
331+
- **Docker Registry**: Distribución de imágenes
332+
333+
## 📖 Recursos adicionales
334+
335+
Cada directorio incluye:
336+
- 📝 **README.md**: Guías detalladas paso a paso
337+
- 🖼️ **imagenes/**: Diagramas y capturas explicativas
338+
- 🔧 **Scripts**: Comandos listos para ejecutar
339+
- 💡 **Ejemplos**: Aplicaciones reales para practicar
340+
- 📋 **Chuletas**: Resúmenes de comandos importantes
341+
342+
¡Feliz aprendizaje con Docker! 🐳✨

0 commit comments

Comments
 (0)