Soy bastante nuevo en Docker y necesito iniciar mi proyecto Angular/SpringBoot/MySQL con docker-compose en la caja de herramientas de docker. Copié un archivo docker yml en mi proyecto que usaba las mismas tecnologías y cambié las rutas dentro de él para que coincidieran con mi proyecto. Sin embargo, cuando intento docker-compose, arroja el siguiente error:
com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure [...] 84 common frames omitted Caused by: java.net.ConnectException: Connection refused (Connection refused)
el docker-compose.yml se ve así:
version: '3' services: database: image: mysql container_name: database environment: MYSQL_ROOT_PASSWORD: **** MYSQL_DATABASE: db_example MYSQL_USER: springuser MYSQL_PASSWORD: **** ports: - 3306:3306 volumes: - db_exampleData:/var/lib/mysql springapi: image: openjdk:10-jre-slim container_name: springapi ports: - 8443:8443 depends_on: - database volumes: - ./backend/target/backend-0.1.0.jar:/application.jar command: ["java", "-jar", "application.jar"] angular: image: nginx:alpine container_name: angular ports: - 4200:80 depends_on: - springapi volumes: - ./nginx.conf:/etc/nginx/nginx.conf - ./frontend/my-app/dist/my-app:/usr/share/nginx/html volumes: db_exampleData:
la aplicación.propiedades:
spring.jpa.hibernate.ddl-auto=none spring.jpa.open-in-view=false spring.datasource.url=jdbc:mysql://localhost:3306/db_example spring.datasource.username=springuser spring.datasource.password=**** server.port=8443
¡Cualquier sugerencia sería muy útil!
necesitas cambiar tu conexion asi:
jdbc:mysql://database:3306/db_example
y agregue esto a su docker-compose bajo el servicio springapi
:
links: - database
por otro lado, puede usar wait-for-it.sh para verificar si la base de datos está activa agregando una sección de comando en el servicio springapi
:
command: ["path/to/wait-for-it.sh", "database:3306", "-t", "6000", "--", "YOUR ACTUAL COMMAND"]