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]

Docker Compose


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 de un contenedor para desarrollo de aplicación React Js


version: '3'
services:
  react-web:
    environment:
      - CHOKIDAR_USEPOLLING=true
    build:
      context: .
      dockerfile: Dockerfile.dev
    ports:
      - "3000:3000"
    volumes:
      - /usr/app/node_modules
      - .:/usr/app

  
  • environment: Bandera necesaria para permitir la actualización de archivos desde el contenedor con los volumenes
  • build: Se debe determinar el context; es decir, el directorio actual de trabajo y el nombre del archivo docker de desarrollo con dockerfile:
  • volumes: Permite la configuración de volumnes entre el contenedor y la máquina de desarrollo.
    /usr/app/node_modules Indica que se va hacer uso de las librerias nodejs instaladas en el contenedor
    .:/usr/app Indica que todo el contenido del directorio actual de trabajo de la máquina local, debe ser colocado en la ruta: /usr/app del contenedor

A continuación se indica la configuración del archivo Dockerfile.dev


  # Base image
FROM node:16-alpine

# Work directory
WORKDIR /usr/app

# Copy package.json to work directory
COPY package.json .

# Run comands to install dependencies
RUN npm install

# Copy all the rest files
COPY . .

# Default commando for the image
CMD [ "npm", "run", "start" ]
  

Fuentes

Comentarios

Entradas populares de este blog

Create a docker image from a spring boot project

Comandos docker

Kubernetes -Tipos de objetos