Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
clase:daw:daw:2eval:tema08 [2025/02/03 20:23] admin [Docker Compose] |
clase:daw:daw:2eval:tema08 [2025/02/22 14:22] (actual) admin [Creación de imágenes] |
||
---|---|---|---|
Línea 44: | Línea 44: | ||
COPY origen destino | COPY origen destino | ||
- | # Expone un puerto | + | # Documenta que puerto |
EXPOSE puerto | EXPOSE puerto | ||
Línea 78: | Línea 78: | ||
- **COPY**: Copia archivos desde la ruta de origen en la máquina host hacia el contenedor en la ruta de destino. | - **COPY**: Copia archivos desde la ruta de origen en la máquina host hacia el contenedor en la ruta de destino. | ||
<sxh> | <sxh> | ||
- | COPY ./japp.jar /opt/app | + | COPY ./app.jar /opt/app |
</ | </ | ||
Línea 86: | Línea 86: | ||
- | - **EXPOSE**: Informa a Docker que el contenedor escuchará en el puerto especificado en tiempo de ejecución. No publica el puerto en el host. | + | <note important> |
+ | ¿Qué es mejor copiar ficheros dentro con '' | ||
+ | |||
+ | ^ Opción ^ Ventaja | ||
+ | | Copiar ficheros desde fuera con '' | ||
+ | | Descargar ficheros desde el '' | ||
+ | |||
+ | </ | ||
+ | |||
+ | - **EXPOSE**: Informa a Docker que el contenedor escuchará en el puerto especificado en tiempo de ejecución. No publica el puerto en la máquina real ni hace realmente nada. Es simplemente para documentar en que puerto | ||
<sxh> | <sxh> | ||
Línea 92: | Línea 101: | ||
</ | </ | ||
- | - **WORKDIR**: | + | - **WORKDIR**: |
<sxh> | <sxh> | ||
Línea 106: | Línea 115: | ||
- | - **CMD**: Especifica el comando predeterminado que se ejecutará cuando el contenedor se inicie. | + | - **CMD**: Especifica el comando predeterminado que se ejecutará cuando el contenedor se inicie. |
<sxh> | <sxh> | ||
- | CMD [" | + | CMD [" |
</ | </ | ||
Línea 119: | Línea 128: | ||
==== Ejemplo: Ejecutar app java ==== | ==== Ejemplo: Ejecutar app java ==== | ||
* Una imagen basada en el JDK 17 | * Una imagen basada en el JDK 17 | ||
- | * Copia el fichero de la máquina real que está en ''/ | + | * Copia el fichero de la máquina real que está en ''/ |
- | * Ejecuta el japp.jar | + | * Ejecuta el app.jar |
<sxh base> | <sxh base> | ||
FROM eclipse-temurin: | FROM eclipse-temurin: | ||
RUN mkdir /opt/app | RUN mkdir /opt/app | ||
- | COPY / | + | COPY / |
WORKDIR /opt/app | WORKDIR /opt/app | ||
EXPOSE 8080 | EXPOSE 8080 | ||
- | CMD [" | + | CMD [" |
</ | </ | ||
Línea 243: | Línea 252: | ||
/app | /app | ||
facturas.jar | facturas.jar | ||
- | /compilador | + | /compilar |
/volumes | /volumes | ||
/app | /app | ||
Línea 249: | Línea 258: | ||
/src | /src | ||
/scripts | /scripts | ||
+ | /target | ||
+ | / | ||
/build | /build | ||
Dockerfile | Dockerfile | ||
/src | /src | ||
+ | /root | ||
+ | /.m2 | ||
+ | settings.xml | ||
/opt | /opt | ||
/java | /java | ||
Línea 260: | Línea 274: | ||
- | | + | ==== Compilar ==== |
- | < | + | Vamos a crea una imagen de Docker con lo siguiente para poder compilar aplicaciones Java: |
+ | | ||
+ | * Maven | ||
+ | * NodeJS | ||
+ | * sass | ||
+ | |||
+ | |||
+ | |||
+ | * Fichero '' | ||
+ | < | ||
FROM ubuntu: | FROM ubuntu: | ||
Línea 268: | Línea 291: | ||
# Actualizar paquetes y instalar dependencias necesarias | # Actualizar paquetes y instalar dependencias necesarias | ||
- | RUN apt-get update | + | RUN apt-get update |
- | | + | RUN apt-get install -y curl unzip ca-certificates |
- | | + | |
- | | + | # Instalar Node.js y npm desde los repositorios oficiales |
- | | + | RUN curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - |
+ | RUN apt-get install -y nodejs | ||
+ | RUN npm install -g sass | ||
COPY /opt /opt | COPY /opt /opt | ||
+ | |||
+ | |||
# Instalar JDK Temurin desde una carpeta local | # Instalar JDK Temurin desde una carpeta local | ||
Línea 285: | Línea 311: | ||
ENV PATH=" | ENV PATH=" | ||
- | # Instalar Node.js y npm desde los repositorios oficiales | + | # Crear un settings.xml básico para maven para que se conecte a los servidores |
- | RUN curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - && \ | + | RUN mkdir -p /root |
- | apt-get install -y nodejs && \ | + | COPY /root /root |
- | npm install -g sass | + | |
- | # Crear un settings.xml básico para evitar mirrors bloqueados | ||
- | RUN mkdir -p /root/.m2 && echo '<? | ||
- | < | ||
- | xmlns: | ||
- | xsi: | ||
- | http:// | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | </ | ||
- | </ | ||
- | </ | ||
WORKDIR /opt/app | WORKDIR /opt/app | ||
Línea 310: | Línea 320: | ||
CMD [" | CMD [" | ||
</ | </ | ||
+ | * Fichero '' | ||
+ | |||
+ | <sxh xml> | ||
+ | <?xml version=" | ||
+ | < | ||
+ | xmlns: | ||
+ | xsi: | ||
+ | http:// | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
* Ejecutarlo todo: | * Ejecutarlo todo: | ||
<sxh bash> | <sxh bash> | ||
- | sudo docker image rm compilar: | + | sudo docker image rm logongas/compilar: |
- | sudo docker buildx build --tag compilar: | + | sudo docker buildx build --tag logongas/compilar: |
sudo docker container run \ | sudo docker container run \ | ||
-it \ | -it \ | ||
Línea 322: | Línea 350: | ||
| | ||
| | ||
- | | + | -u $(id -u):$(id -g) \ |
+ | | ||
+ | </ | ||
+ | |||
+ | |||
+ | * En vez de crear la imagen se puede bajar con: | ||
+ | <sxh bash> | ||
+ | docker image pull logongas/compilar: | ||
</ | </ | ||
+ | Un ejemplo de todo ésto se puede ver en: | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
===== Gestión de Redes ===== | ===== Gestión de Redes ===== |