Entradas

Mostrando entradas de diciembre, 2021

Create a docker image from a spring boot project

In order to create a docker image from a spring boot project, First, your pom.xml has to be configured. <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!-- Cofiguration for creating a docker image --> <image> <name>chamow01/${project.artifactId}</name> </image> </configuration> </plugin> </plugins> </build> Then, the next maven command needs to be applied, so spring boot uses paketo-buildpacks in order to create a docker image based on you Java code mvn spring-boot:build-image ... [INFO] > Running creator [INFO] [creator] ===> DETECTING [INFO] [creator] 6 of 24 buildpacks participating [INFO] [creator] paketo-buildpacks/ca-certificates 3.2.0 [INFO] [creator] paketo-buildpacks/bellsoft-liberica 9.3.2 [INFO]

Dockerfile multi fase

Imagen
A continuación se detalla la configuración de un archivo Dockerfile multi fase; en donde, primero se utiliza una imagen alpine para construir una aplicación ReactJs y luego utilizar una imagen de nginx para deployar el contenido de la carpeta build Diagrama de configuración Archivo Dockerfile # --------------------------------- # FIRST BLOCK AS A BUILDER PHASE # --------------------------------- FROM node:16-alpine as builder WORKDIR /usr/app COPY package.json . RUN npm install COPY . . RUN npm run build # Default commando for the image, no es necesario #CMD [ ] # --------------------------------- # SECOND BLOCK AS A RUN PHASE # --------------------------------- FROM nginx COPY --from=builder /usr/app/build /usr/share/nginx/html # Default commando for the image, no es necesario ya que nginx inicia automaticamente #CMD [ ] Fase 1: Se utiliza una imagen 16-alpine como constructor, se utiliza el directorio de trabajo /usr/app , se copia el archivo package.jso

Docker Compose

Imagen
Docker compoose permite inicializar múltiples contenedores al mismo tiempo; ademas, permite automatizar la variedad de opciones que se utiliza en los comandos con docker, como por ejemplo; docker run <arguments> Se debe utilizar el archivo docker-compose.yml en donde se puede utilizar varios comandos docker A continuación un ejemplo de creación de dos contenedores en un archivo docker-compose.yml. version: "3" services: redise-server: image: "redis" node-app: build: ./app ports: - "8081:8083" Contenedor 1: Contiene la configuración de redis, en el cual se indica que se debe usar la imagen:redis Contenedor 2: Contiene la configuración de un servidor node, en el cual se indica que se debe usar un archivo Dockerfile ubicado en la carpeta ./app; ademas, se realiza el mapeao de los puertos 8081 (máquina local) con el puerto 8083 (Servidor node) A continuación un ejemplo de creación

Comandos docker

A continuación se detalla un listado de comandos para Docker Comando Descripción Ejemplo Básicos docker --version Versión de docker docker --version docker info Información sobre el entrono de docker docker info docker login Para iniciar sesión en hub docker Imagenes docker images Lista las imagenes instaladas docker image inspect id_image Información detalla de la imagen docker image inspect 7adf docker pull Obtiene e instala una imagen desde hub docker docker pull ubuntu docker rmi Elimina una imagen instalada docker rmi ubuntu Contenedores

Comandos Docker Compose

Imagen
A continuación, se detalla los comandos de docker compose. Comando Descripción Ejemplo docker-compose up Es equivalente a docker run; por lo tanto, corre las imagenes declaradas en el archivo docker-compose.yml docker-compose up docker-compose up -d Similar a docker-compose up pero la bandera -d permite correr la imagen en background docker-compose up -d docker-compose down Permite parar las imagenes detalladas en el archivo docker-compose.yml docker-compose down docker-compose ps Ppermite ver los procesos corriendo de dicho archivo docker-compose ps docker-compose restart container_name Permite reiniciar un contenedor docker-compose restart postgres docker-compose up --build Permite reconstruir las imag