sql >> Database teknologi >  >> RDS >> Mysql

Spring Boot kan ikke oprette forbindelse til MySQLand-udgange i Docker/Docker compose

Du sender DATABASE_HOST , DATABASE_PORT , DATABASE_NAME , DATABASE_USER og DATABASE_PASSWORD men du bruger det ikke i din app.

Opdater dine ejendomme på denne måde. (Bedre hvis du opretter en profil, så din app kører uden for docker)

spring.datasource.url=jdbc:mysql://${DATABASE_HOST}:${DATABASE_PORT}/${DATABASE_NAME}?autoReconnect=true
spring.datasource.username=${DATABASE_USER}
spring.datasource.password=${DATABASE_PASSWORD}

Hvis du virkelig ønsker at bruge localhost som din db_url . Du kan også bruge network_mode: "service:[service name]" docker composes ejendom. Eneste ulempe er, at denne egenskab ikke kan bruges med port ejendom.

version: '3'

services: 
  docker-mysql:
    image: mysql:latest
    network_mode: "service:spring-boot-jpa-docker-webapp"
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=test
      - MYSQL_PASSWORD=root
  spring-boot-jpa-docker-webapp:
    image: springboot_docker
    depends_on:
      - docker-mysql
    ports:
      - 8080:8080
      - 3306 #Add this only if you want to expose the mysql to outer world.
    environment:
      - DATABASE_USER=root
      - DATABASE_PASSWORD=root
      - DATABASE_NAME=test

Og din egenskabsfil kunne se ud

spring.datasource.url=jdbc:mysql://localhost:3306/${DATABASE_NAME}?autoReconnect=true
spring.datasource.username=${DATABASE_USER}
spring.datasource.password=${DATABASE_PASSWORD}


  1. Hvad er forskellen mellem enkelte anførselstegn og dobbelte anførselstegn i PostgreSQL?

  2. SELECT med forespørgselsvariabler, der ikke bruger INDEX'er

  3. Hvordan får man adgang til mysql-databasen ved hjælp af shell-script?

  4. Hvordan laver man en sikkerhedskopi af en enkelt tabel i en postgres-database?