Dockerizar API REST Java + Spring Boot con PostgreSQL y Docker Compose 2023

Поділитися
Вставка
  • Опубліковано 18 гру 2024

КОМЕНТАРІ • 154

  • @programacion-es
    @programacion-es  Рік тому +1

    En este vídeo te muestro cómo Dockerizar una API REST desarrollada con Java + Spring Boot con PostgreSQL y Docker Compose para facilitar el despliegue de tus apps en entornos de producción.
    Además, aprenderás los comandos básicos para gestionar tus contenedores de Docker en lote usando Docker Compose y probaremos nuestra API REST de Spring Boot usando Thunder Client a través de VSCode.
    Para este tutorial he utilizado Eclipse como IDE para desarrollar con Java, pero puedes usar el IDE que más te guste para este fin.
    Si te ha gustado o te ha sido útil, no te vayas sin comentar un "que tengas buen código"
    #programacionenespañol
    Contenido del vídeo:
    ===
    00:00 - Introducción
    01:03 - Creando la app
    04:27 - Dependencias del proyecto
    05:48 - Extensiones de Eclipse
    06:28 - Desarrollando la API
    11:45 - Conexión a la BD
    13:37 - Dockerfile
    16:21 - Docker compose
    24:00 - Pruebas y correcciones
    25:26 - Gestionar contenedores
    28:18 - Probando la API
    30:11 - Conclusiones
    Enlaces de interés:
    ===
    - Spring initializer:
    start.spring.io/
    - Repositorio con el código:
    github.com/pedrovelasquez9/springboot-postgresql-docker-compose
    - Devathon:
    programacion-es.dev/devathon
    - Redes de la comunidad:
    programacion-es.dev/redes/
    Conviértete en miembro de este canal para disfrutar de ventajas, sorteos exclusivos dentro de la comunidad y un badge con tu imagen de perfil en la web de Programación en español:
    ua-cam.com/channels/NliuGyPizt7uNcdCrUoduQ.htmljoin

  • @santiagolopezgarcia3334
    @santiagolopezgarcia3334 Рік тому +4

    La verdad no tengo nada que decir, solamente agradezcer que alguien por fin da una buena explicacion de como manejar docker compose, ya que todos los demas videos son de hace 2 años y no me han funcionado, sin embargo este fue de gran ayuda, muchas gracias por su aporte.

    • @programacion-es
      @programacion-es  Рік тому

      Infinitas gracias por el comentario, me alegra un montón que el contenido sea útil, un gran abrazo y que tengas buen código!

  • @MauroValerioti
    @MauroValerioti 10 місяців тому +2

    que maestro! jamas pude hacer andar docker ni lo entendi. pero ahora que me lo explicaste asi ya se como funciona y por donde empezar a dockerizar mis proyectos en spring boot. saludos

    • @programacion-es
      @programacion-es  10 місяців тому +1

      Esoooo, me alegra un montón que te haya sido útil!! Un saludo y que tengas buen código!!

  • @saulguerrero7015
    @saulguerrero7015 Рік тому +1

    GRACIAS!
    No suelo comentar videos, pero en serio gracias!
    Estaba muy atascado al intentar dockerizar una app SB, PostgreSQL y Angular; la pereza de no leer documentación y no tomar tan importante el tema de la dockerización hizo que entienda mal muchas cosas y que de muchas vueltas perdiendo mi tiempo. Gracias UA-cam y sobre todo gracias a tí por crear estos videos que quedan como anillo al dedo a gente atascada en cosas específicas ♥

    • @programacion-es
      @programacion-es  Рік тому +1

      Tengo que agradecerte yo a ti por el comentario, ayer estaba grabando y estaba medio desanimado hasta que hoy leí tu comentario, el hecho de saber que el contenido ayuda me anima un montón a seguir creando, mil gracias y que tengas buen código!!!

  • @torrestobias
    @torrestobias 2 місяці тому

    Excelente contenido man, sos un genio, me aclaraste muchas dudas que tenia sobre docker

    • @programacion-es
      @programacion-es  2 місяці тому

      Grandeeee me alegra que el contenido te haya sido útil, un saludo y que tengas buen código!!

  • @nanoandre2271
    @nanoandre2271 Рік тому +2

    Debo decir, que este video era todo lo que necesitaba saber, Muchas gracias enserio.

    • @programacion-es
      @programacion-es  Рік тому

      Muchísimas graciaaaas, me alegra un montón que te haya servido, un gran saludo y que tengas buen código!!

  • @gustavostarace1252
    @gustavostarace1252 Рік тому +1

    Este es el primer vídeo que veo tuyo, muy buen contenido, mil gracias y buen código!

    • @programacion-es
      @programacion-es  Рік тому +1

      Mil graciaaaaas! Un gran saludo y que tengas buen código!!

  • @johnherrera5913
    @johnherrera5913 Рік тому

    Master!!
    Excelente, una muy buena base de aprendizaje para avanzar.
    Muchas gracias!

    • @programacion-es
      @programacion-es  Рік тому

      Muchas gracias a ti por comentar!! Un saludo y que tengas buen código!!

  • @ivandlf1639
    @ivandlf1639 Рік тому

    Excelente toda la info que tiras hermano, justo estoy aprovechando 1 mes de donweb cloud y esto me viene al pelo para aprovecharlo y desplegar mi api rest. Nuevo suscriptor!

    • @programacion-es
      @programacion-es  Рік тому

      Grandeeeeeee, mil gracias por el comentario y el apoyo, un saludo y que tengas buen código!!

  • @maikoldx9580
    @maikoldx9580 Рік тому +1

    Esto sí que es contenido de calidad, crack!

    • @programacion-es
      @programacion-es  Рік тому

      Mil graciaaaaas!!! Se agradece un montón el feedback, un gran abrazo y que tengas buen código!!

  • @luisenriquecalderonayala1204
    @luisenriquecalderonayala1204 4 місяці тому

    Sencillo y muy bueno, gracias.

    • @programacion-es
      @programacion-es  4 місяці тому

      Gracias a ti por comentar, un saludo y que tengas buen código!!

  • @nixonherneyrojasdiaz9167
    @nixonherneyrojasdiaz9167 Рік тому

    Excelente aporte, muy bien explicado.

  • @chazz747
    @chazz747 Рік тому

    Me ha resultado muy útil :-) Muy buen contenido, ¡que tengas buen código!

  • @bryanrubiovalverde5677
    @bryanrubiovalverde5677 2 місяці тому

    excelente me sirvio mucho, solo tube problemas al empaquetar que por alguna razon daba error y demas, pero despues funciono
    saludos !!!!

    • @programacion-es
      @programacion-es  2 місяці тому

      Esoooo, un saludo y que tengas buen código!!

  • @ivanetinajero
    @ivanetinajero Рік тому

    Excelente contenido y bien explicado al punto. Gracias por compartir

  • @code.warrior
    @code.warrior Рік тому

    Excelente explicación!! 🙌
    Saludos!!!

    • @programacion-es
      @programacion-es  Рік тому

      Mil gracias!! Un saludo y que tengas buen código!!

  • @enriquesime2666
    @enriquesime2666 8 місяців тому

    Liked and subscribed !

  • @italoramirezprieto428
    @italoramirezprieto428 Рік тому

    Excelente tutorial, me ayudó mucho...suscrito.
    !Buen código!

    • @programacion-es
      @programacion-es  Рік тому

      Esooooo, mil gracias por la sub genio!! Un saludo y que tengas buen código!

  • @gloriaermacastellanossilva6862

    Excelente video...Muchas Gracias

  • @dcloki789
    @dcloki789 9 місяців тому

    excelente explicacion, gracias

    • @programacion-es
      @programacion-es  9 місяців тому

      Esooo, gracias a ti por comentar! Un saludo y que tengas buen código!

  • @AlexCera-zm5vg
    @AlexCera-zm5vg Рік тому

    Muchas gracias por este contenido de alto valor. 🤙

    • @programacion-es
      @programacion-es  Рік тому

      Gracias a ti por el comentario y la buena vibra, un saludo y que tengas buen código!!

  • @moriljeanfrancois8532
    @moriljeanfrancois8532 Рік тому

    gracias estimado. junto lo que estaba buscando.

    • @programacion-es
      @programacion-es  Рік тому

      Esoooo me alegra un montón que te haya sido útil, un saludo y que tengas buen código!!

  • @edwinolayaordinola3939
    @edwinolayaordinola3939 Рік тому

    muchas gracias por el aporte

  • @bandamaestrovalero
    @bandamaestrovalero Рік тому

    Muchas gracias Pedro!!!

    • @programacion-es
      @programacion-es  Рік тому

      Muchas gracias a ti por comentar!! Un saludo y que tengas buen código!!

  • @TiburonesDeLaInformatica
    @TiburonesDeLaInformatica Рік тому

    Muchas gracias por este video :D muy útil

    • @programacion-es
      @programacion-es  Рік тому +1

      Esoooo muchas gracias por el comentario!! Un saludo y que tengas buen código!!

  • @jorgearturohernandezjimene240
    @jorgearturohernandezjimene240 Місяць тому

    excelente, gracias

    • @programacion-es
      @programacion-es  Місяць тому +1

      Gracias a ti por comentar!! Un saludo y que tengas buen código!!

  • @kamboj65
    @kamboj65 6 місяців тому

    muchas gracias! llevaba ya 1 día intentando desplegar una aplicación pero no conseguía de ninguna forma. tenía un problema con la URL de base de datos. gracias a este video he podido entender como funciona y he podido desplegarlo.

    • @programacion-es
      @programacion-es  5 місяців тому

      Ojooo, que grandeeeee, me alegra un montón que el vídeo te haya sido útil, un saludo y que tengas buen código!!

  • @sagi33delriego82
    @sagi33delriego82 4 місяці тому

    Muchas Gracias por compartir este video me aclaro dudas , me gustaría ver uno de sus videos sobre docker compose con Volumenes para orquestación de front and Backend en java puesto que tengo problemas de permisos con ubuntu Saludos

    • @programacion-es
      @programacion-es  4 місяці тому

      Tienes un vídeo con volúmenes y redes aquí, por si te sirve =) ua-cam.com/video/DIDel70dFlI/v-deo.html

  • @danirod-dev
    @danirod-dev Рік тому

    Vengo por la curiosidad de ver a Pedro usando Eclipse y Java. Contenido de calidad.

    • @programacion-es
      @programacion-es  Рік тому

      Of course que yes, hoy es día de java sin Scripts 😎👨‍💻🤘😜

  • @othamae
    @othamae Рік тому

    Gracias Pedro!!!! 🥰

    • @programacion-es
      @programacion-es  Рік тому

      Gracias a ti por comentar Verónica!! =) Un saludo y que tengas buen código!

  • @pedrocarlos4752
    @pedrocarlos4752 4 дні тому

    Gran explicación.... Solo tengo una consulta. Para el desarrollo y depuración con intelliJ Idea, es necesario tener el OpenJDK instalado en el equipo host??? O se puede solo en el contenedor y montar un volumen sincronizando el proyecto?? Muchas gracias

    • @programacion-es
      @programacion-es  2 дні тому

      Depende de cómo quieras usar el contenedor, he visto casos donde montan un volumen y sincronizan los cambios en el código con el contenedor levantado a través del volumen, aunque personalmente no soy fan xD

  • @stinglish7663
    @stinglish7663 8 місяців тому

    Le entendí a todo tu video, muchas gracias por explicar bien y sin tanto rodeo.
    Solo una duda, si desarrollé mi app de Spring Boot con JDK 21, qué imagen me recomiendas usar en mi Dockerfile? Intenté con openjdk:21-jdk-alpine pero no existe aparentemente, y estoy pensando si usar openjdk:17-jdk-alpine pero no sé qué tantos problemas entre versiones de JDK pueda traer.
    Gracias!

    • @programacion-es
      @programacion-es  8 місяців тому +1

      Muchas gracias por comentar!! Dependiendo de las fearures que uses puede darte más o menos problemas, si usas algo específico de la 21 que no esté disponible en la 17, por ejemplo. Podrías hacer una prueba inicial de levantado del contenedor a ver qué tal 😎🤘

  • @soydk4377
    @soydk4377 9 місяців тому

    nice maestro!, nuevo sub
    esperando a un tuto desplegando esas imagenes en aws con una base de datos almacenada en RDS

    • @programacion-es
      @programacion-es  9 місяців тому +1

      Esooooo, me anoto hacer cosas en AWS para próximos vídeos!! Un saludo y que tengas buen código!!

  • @edgarbenitezvalera4491
    @edgarbenitezvalera4491 3 місяці тому

    Esta buenísimo, he estado buscando la parte de docker con spring boot y gradlew. Tengo una duda, que no se si lo haces de esa forma para saltarte algunas cosas o porque simplemente esa es la forma correcta. En el Dockerfile ya tienes previamente generado el jar, por lo que el layer lo único que indica es que copie el jar a la ruta donde te interesa. Pero como haces si quisieras generar el jar y luego copiarlo? Tener esos layer en el Dockerfile

    • @programacion-es
      @programacion-es  3 місяці тому +1

      Próximamente grabaré un vídeo con lo que comentas =)

  • @nanocode10
    @nanocode10 Рік тому

    esto es genial!

  • @anyelodiazmonroy6403
    @anyelodiazmonroy6403 Рік тому

    Que tengas buen código !!!

  • @whithmann
    @whithmann Рік тому +1

    Por qué se construye el .jar si las variables de entorno aún no fueron seteadas hasta antes del minuto 14:40 ? Hasta ese momento solo se configuraron en el application.properties mas no se setearon dichos valores como la url a la base de datos, usuario y la contraseña, lo menciono porque en mi caso, cuando trato de construir el .jar me sale un error sobre que la conexión (url) a la base de datos está incorrecto, agregar que ejecute el comando para que evite los tests, lo intente con Postgres y MySQL y el error es el mismo

    • @programacion-es
      @programacion-es  Рік тому +1

      Mmm, si te estás saltando los tests, no debería darte error al empaquetar, usualmente da el error de url errónea de conexión a la BD por algún tests por defecto que se está ejecutando al empaquetar. Te copio el comando que estoy ejecutando por si, de casualidad, tenías algún typo: ./mvnw clean package -DskipTests

    • @whithmann
      @whithmann 10 місяців тому

      @@programacion-es funciono! muchas gracias

  • @ivanetinajero
    @ivanetinajero Рік тому

    Gracias. Tienes mas contenido de Docker?

    • @programacion-es
      @programacion-es  Рік тому

      ¡Si! Te dejo una lista de reproducción con mis vídeos de Docker (pronto vendrán más): ua-cam.com/play/PL8ztFHK8Pm3sfDZSTz56VpEcwN-_e0Vn-.html

  • @alanona7529
    @alanona7529 11 місяців тому

    Amigo muy buen video, estoy haciendo la practica en una maquina virtual con virtual box y estoy en el minuto 23:31 en donde usas este comando "docker-compose up" el comando corre hasta que me muestra este log "database system is ready to accept connections" por favor me podrías decir por que se queda en este proceso, muchas gracias por la atención.

    • @programacion-es
      @programacion-es  10 місяців тому

      Habría que ver la traza, puede ser por muchas razones, puedes abrir un hilo en nuestro foro de ayuda en el servidor de Discord, el enlace al server lo tienes aquí: programacion-es.dev/redes/

  • @rodrigOriginal91
    @rodrigOriginal91 4 місяці тому

    Muy buen video! Consulta. Si tuvieras que hacer cambios en el API REST (porque te pidieron features nuevas), cual seria la forma mas sencilla de programar y testear el API, sin tener que crear la imagen nuevamente?

    • @programacion-es
      @programacion-es  4 місяці тому

      En principio la generación de versiones de nuevas imágenes te permite justamente trabajar con versiones para nuevos features/fixes, por lo que la idea sería generar nuevas imágenes con versión actualizada. Ahora, si lo que necesitas es un entorno de desarrollo en el contenedor, podrías usar volúmenes para sincronizar tus cambios en el código con la app ejecutándose en el contenedor de Docker =)

    • @rodrigOriginal91
      @rodrigOriginal91 4 місяці тому

      @@programacion-es Excelente! Por casualidad no tendras un video de eso, no? jaja

    • @programacion-es
      @programacion-es  4 місяці тому +1

      @@rodrigOriginal91 Si, aquí explico volúmenes y redes con Docker =) ua-cam.com/video/DIDel70dFlI/v-deo.html

    • @rodrigOriginal91
      @rodrigOriginal91 4 місяці тому

      @@programacion-es Muchas gracias!!!

  • @zelgadis_lol
    @zelgadis_lol Рік тому

    Muy bueno

  • @rashiddtt
    @rashiddtt Рік тому

    Təşəkkür.

  • @OscarVesga
    @OscarVesga 10 місяців тому

    muy buen video pero tengo la duda de porque no usaste multistage build para el empaquetado de la app spring boot?

    • @programacion-es
      @programacion-es  10 місяців тому +1

      No se me ocurrió al momento de hacer el ejercicio, pero me anoto un videillo explicando el concepto y agregandolo al ejercicio de este para complementar 😎🤘

  • @poolcitopoolcito9394
    @poolcitopoolcito9394 6 днів тому

    esta pequeña prueba sirve pero +docker seria la voz, mas complejo en produccion

    • @programacion-es
      @programacion-es  5 днів тому

      @@poolcitopoolcito9394 tendrías esto como base, el resto dependerá de tu entorno y qué tengas que adaptar al contenedor, redes, config, etc

  • @juanortega4973
    @juanortega4973 Рік тому

    genial

  • @edwinolayaordinola3939
    @edwinolayaordinola3939 Рік тому

    awesome!!!

  • @sebastianvillarsegura6682
    @sebastianvillarsegura6682 2 місяці тому

    cuando tenga es api en producción como puedo acceder remotamente a la base de datos que esta en el contendor?? o hay manera de configurar el docker para que se conecte a una base de datos del servidor??

    • @programacion-es
      @programacion-es  2 місяці тому

      Si lo tienes en el contenedor, puedes exponer el puerto donde tengas el gestor de bbdd para que puedas acceder desde el navegador =)

  • @sergiomancilla937
    @sergiomancilla937 9 місяців тому

    ¡Muy buen video! Vine aquí porque rstoy teniendo problemas para dockerizar una aplicación con web2py y postgresql para aprender. Pero no sé desde dónde crear la bd. He intentado desde el Dockerfile ejecutando un comando para acceder a postgres, pero me sale error porque al parecer no reconoce la conexión o es rechazada. No creo que sea una buena práctica crear la bd desde allí. ¿Alguien sabe desde dónde la puedo crear? 🥲

    • @programacion-es
      @programacion-es  9 місяців тому +1

      Podrías tener un script con las instrucciones de creación de la BD y agregar la ejecución como parte del levantado del contenedor, solo es una idea, no sé si estás buscando algo así =)

  • @PhandaWam
    @PhandaWam 5 місяців тому

    Tenes idea de o me podrías pasar un tuto, de como agregar liquibase al docker-compose?

    • @programacion-es
      @programacion-es  5 місяців тому +1

      Puedes usar la imagen de liquibase para docker: hub.docker.com/r/liquibase/liquibase

    • @PhandaWam
      @PhandaWam 5 місяців тому

      @@programacion-es Muchas gracias!

  • @ignaciomendez7557
    @ignaciomendez7557 2 місяці тому

    una pregunta: hay diferencia si lo hago con Gradle en lugar de Maven?

    • @programacion-es
      @programacion-es  2 місяці тому

      No, solo cambiará lo relacionado con la gestión de los paquetes del proyecto, donde use maven, usas gradle como necesites y listo =)

  • @neutro78
    @neutro78 Рік тому

    disculpa la imagen de java que usas me dice que está deprecada ¿crees que es buena idea usar la imagen amazoncorretto

    • @programacion-es
      @programacion-es  Рік тому +1

      Puedes usar alguna oficial o de otro autor que esté actualizada =) me anoto actualizarla también en el repo del ejercicio

    • @neutro78
      @neutro78 Рік тому

      @@programacion-es le agradecería:3

  • @eduardoarellano3939
    @eduardoarellano3939 9 місяців тому

    Estupendo video, pero en la parte de docker-compose te caiste al usar un fondo oscuro con letras negras :C.

    • @programacion-es
      @programacion-es  9 місяців тому

      Nooooo askdjashjdgajhdgahsd lo tomo en cuenta para próximos vídeos, mil gracias por el feedback =)

  • @juanbau5027
    @juanbau5027 9 місяців тому

    Hola, que tema esta usando para la consola de bash?

    • @programacion-es
      @programacion-es  9 місяців тому

      Hola! No estoy usando un tema, estoy usando git bash directamente =)

  • @userdefault3016
    @userdefault3016 Рік тому

    Es necesario que el puerto del contenedor sea igual al puerto de la app spring boot? La app inicia en port 8080 y el contenedor también en 8080, pasa algo si son diferentes? Cambia algo?

    • @programacion-es
      @programacion-es  Рік тому +1

      Hola! Si te refieres al puerto que expones al host, no tiene que ser el mismo, puedes mapear otro puerto, por ejemplo, si la app de spring está en el 8080, puedes mapear el 9090 al host y accedes desde ese puerto =) Te dejo un enlace con documentación por si te hace falta más detalle/ejemplo: docs.docker.com/network/

    • @userdefault3016
      @userdefault3016 Рік тому

      @@programacion-es Hola. No, me refiero al puerto por el cuál escucha el contenedor, no al puerto que mapea al host. Saludos.

    • @programacion-es
      @programacion-es  Рік тому +1

      @@userdefault3016 No estoy seguro de entender qué quieres hacer, pero si tu app está en el puerto 8080 y necesitas, por ejemplo, comunicarte con la app dentro del contenedor por x razón, si, tiene que ser el mismo puerto, el puerto lo define la app, el contenedor lo expone, mapea o bloquea según lo configures

  • @JuanGomez-s3t
    @JuanGomez-s3t 8 місяців тому

    buen codigo

  • @santiagogarcia8794
    @santiagogarcia8794 Рік тому

    Hola! Esta es una duda más de Spring Boot, noto que si en User.java, no se le declara @Table(name = "users") si no "user" en singular no funciona las consultas a la API, alguien me puede explicar por qué? Me salté eso porque quería dejarlo en singular, pero si no lo pongo en plural no funciona. Gracias!!

    • @programacion-es
      @programacion-es  Рік тому

      Seguramente, si miras los logs al levantar los contenedores, tengas un error de postgresql cuando hibernate trata de crear la tabla porque user es una palabra reservada de postgresql, si quieres usar ese nombre en la tabla, intenta con un scape de comillas, algo tal que así: @Table(name="\"user\"")

    • @santiagogarcia8794
      @santiagogarcia8794 Рік тому

      Tenés razón, gracias! Otra pregunta: si empaqueto la app con el comando que das de "./mvnw clean package -DskipTests" funciona, pero si corro la aplicación normal por ejemplo en mi IDE Intellij me da un error: "Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class path resource" que basicamente me dice que en application.properties no he definido el url de la bd, tú no hiciste ninguna configuración extra, pero no corriste la aplicación sin tests y eso me genera dudas de como debería de funcionar normalmente, hace falta algún configuración más para que pueda acceder a el contenedor de la bd o algo? Muchas gracias!! @@programacion-es

    • @kevinmc24
      @kevinmc24 Рік тому

      lo q pasa es q eso se usa para definir el nombre o bien decirle q tabla quiere tomarla de la bd como user osea puedes creae una entidas user pero en la base de datos que ya te dio tu jefe esta como persona tonces hace la entidad user y em table pones persona

  • @dhernandezm
    @dhernandezm Рік тому

    hola! cuando intento crear mi archivo jar, me da un error de conexion sql (obviamente la base de datos "no existe" aun ya que no se esta corriendo la imagen de la bd) entonces no me deja correr mi docker compose si no tengo mi archivo jar, pero no me deja generar mi archivo jar si no tengo corriendo la imagen de docker

    • @programacion-es
      @programacion-es  Рік тому

      Revisa bien qué tienes definido en el Docker compose, fíjate que en el minuto 20:00 comienzo a explicar esa dependencia justamente =)

    • @dhernandezm
      @dhernandezm Рік тому

      @@programacion-es graciass, ya lo logré levantar, el tema es que mi app java no se conecta con la bd, lo intento desde mi IDE y mi bd en docker y tampoco, pero si lo hago con una base de datos en mi propio pc (sin docker) ahi si no tengo nigun problema, el error es entre conexiones de contenedores

  • @manafun3
    @manafun3 10 місяців тому

    no se por que me da un error de Communications link failure al momento de iniciar la api ya revise todo y esta igual al video

    • @programacion-es
      @programacion-es  10 місяців тому +1

      Ten en cuenta los datos de conexión a tu BD y las demás variables de entorno que estés usando para asegurar que se adaptan a tu entorno

  • @Natahsz
    @Natahsz 3 місяці тому

    para mysql es lo mismo?

    • @programacion-es
      @programacion-es  3 місяці тому +1

      Si, solo cambia la conexión a nivel técnico y donde uso postgre, usarías mysql =)

  • @melchiah6603
    @melchiah6603 3 місяці тому

    Que tengas buen codigo.

  • @francofernandez9352
    @francofernandez9352 Рік тому

    A alguien más no le sale el archivo .jar en la carpeta target? no lo tengo :(

    • @programacion-es
      @programacion-es  Рік тому +1

      Mmm, puedes probar ejecutando el proceso de forma manual para que veas los logs específicos de cada comando de forma más directa y ver si la generación del .jar te arroja un error

    • @francofernandez9352
      @francofernandez9352 Рік тому

      @@programacion-es Pude corregirlo gracias!

  • @ErikCampobadal
    @ErikCampobadal 3 місяці тому +1

    Tener un Dockerfile pierde totalmente la gracia cuando directamente le pones el compilado dentro, ya que obligas que el compilado se haga desde la maquina del desarollador o la CI. De esta manera tienes dos entornos distintos y uno no controlado. Si usass multi-stage builds solo necesitas compilarlo en una y ejecutarlo en el otro. Esta practica es la habitual en Docker en otros mundos como Go, Rust, C o similares y deberia serlo para Java tambien.

    • @programacion-es
      @programacion-es  3 місяці тому

      De hecho voy a agregar un video a la playlist de multi stage builds =)

    • @ErikCampobadal
      @ErikCampobadal 3 місяці тому

      @@programacion-es Genial. Con algo simple tienes algo muchisimo mas resiliente.
      FROM maven:3.9.9-eclipse-temurin-22-alpine AS build
      WORKDIR /app
      COPY . .
      RUN mvn clean package -DskipTests
      FROM eclipse-temurin:22-jre-alpine
      WORKDIR /app
      COPY --from=build /app/target/demo.jar demo.jar
      EXPOSE 3000
      ENTRYPOINT ["java", "-jar", "/app/demo.jar"]

  • @davidlarocka
    @davidlarocka Рік тому

    Muy util... ahora tengo en mi github un ejemplo de como dockenizar spring + postgres @davidlarocka muchas gracias

  • @PabloQ90
    @PabloQ90 5 місяців тому

    Ayuda, estoy intentando ejecutar una aplicacion pero conectandose a una base MySQL. Pero al ejecutar la imagen me lanza este error en los logs de spring: java.lang.NullPointerException: Cannot invoke "org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(java.sql.SQLException, String)" because the return value of "org.hibernate.resource.transaction.backend.jdbc.internal.JdbcIsolationDelegate.sqlExceptionHelper()" is null
    De forma local sin dockerizar la aplicacion ejecuta Ok.

    • @programacion-es
      @programacion-es  5 місяців тому

      Mmm, puede ser algo con las credenciales o los puertos de tu bd en docker, échale un ojo al log completo por si hay alguna traza haciendo referencia a un error de config más concreto

    • @PabloQ90
      @PabloQ90 5 місяців тому

      @@programacion-es Cuando coloco localhost en la url me devuelve un connection refused, con el nombre del contenedor de la base me dice que no reconoce el host. Ya intente de miles de maneras

  • @RobertoAguilar-r2d
    @RobertoAguilar-r2d 10 місяців тому

    hola, muchas gracias por el tutorial, muy intersante, tengo un problema de ejecucion para reproducir los pasos, os comento: tras clonarme el repo del project original, crear el paquete jar y lanzar por consola el comando: docker-compose build java_app ( con el comando docker-composite up tb me sale lo mismo) , me sale este error: => ERROR [java_app internal] load build context , failed to solve: changes out of order: "target/dockerized.postgresql-0.0.1-SNAPSHOT.jar" "", lo cual hace que no se me cree la imagen docker necesaria, a alguien mas le sucede o se sabe a que puede ser debido? ... gracias adelantadas.
    log:
    [+] Building 4.4s (5/6) docker:default
    => [java_app internal] load build definition from dockerfile 0.1s
    => => transferring dockerfile: 177B 0.0s
    => [java_app internal] load metadata for docker.io/library/openjdk:17-jdk-alpine 3.9s
    => [java_app internal] load .dockerignore 0.1s
    => => transferring context: 2B 0.0s
    => ERROR [java_app internal] load build context 0.1s
    => => transferring context: 69B 0.0s
    => [java_app 1/2] FROM docker.io/library/openjdk:17-jdk-alpine@sha256:4b6abae565492dbe9e7a894137c966a74851542389 0.1s
    => => resolve docker.io/library/openjdk:17-jdk-alpine@sha256:4b6abae565492dbe9e7a894137c966a7485154238902f2f25e9 0.1s
    ------
    > [java_app internal] load build context:
    ------
    failed to solve: changes out of order: "target/dockerized.postgresql-0.0.1-SNAPSHOT.jar" ""

    • @programacion-es
      @programacion-es  10 місяців тому

      Mmm, has construido el paquete para generar el snapshot.jar antes de hacer el docker compose build?

  • @juancarloslopez597
    @juancarloslopez597 Рік тому

    alguien sabe por que sale este error cuando realizo el mvnw install ?
    Errors:
    [ERROR] ApplicationTests.contextLoads ┬╗ IllegalState Failed to load ApplicationContext for [WebMergedContextConfiguration@210d2a6c testClass = com.pee.dockerized.postgresql.ApplicationTests, locations = [], classes = [com.pee.dockerized.postgresql.Application], contextInitializerClasses = [], activeProfiles = [], propertySourceLocations = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@5745ca0e, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@15a34df2, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@3feb2dda, org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@1500b2f3, org.springframework.boot.test.context.SpringBootTestAnnotation@ce007a56], resourceBasePath = "src/main/webapp", contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null]
    solo lo he descargado y ejecutado

    • @programacion-es
      @programacion-es  Рік тому

      Si quieres déjalo en el foro de ayuda de Discord con todo el detalle que puedas =)

  • @josuefuenteschaqui
    @josuefuenteschaqui Рік тому

    Tengo un problema con un docker compose, me salie el siguiente error:
    Caused by: java.lang.IllegalArgumentException: URL must start with 'jdbc'
    En el docker compose esta de la siguiente manera: - DATABASE_URL=jdbc:postgresql://db:5432/SR
    y en el propierties de la siguiente: spring.datasource.url= = ${DATABASE_URL}

    • @programacion-es
      @programacion-es  Рік тому

      Ojo con el doble "=" en el datasource.url, de todos modos, puedes echarle un ojo al formato del yml y a lo que necesitees en el repositorio del vídeo, te dejo por aquí el enlace: github.com/pedrovelasquez9/springboot-postgresql-docker-compose

  • @lorenaf86
    @lorenaf86 Рік тому

    Que tengas buen código !!!

  • @OsainDabián
    @OsainDabián Місяць тому

    Que tengas buen código !!!