【发布时间】:2021-05-16 02:11:16
【问题描述】:
我创建了一个使用 MySQL 数据库的 Spring Boot 应用程序。我使用 docker-compose 来启动数据库。
services:
adminer:
image: adminer
restart: always
ports:
- 8888:8080
db:
image: mysql:latest
restart: always
environment:
MYSQL_ROOT_PASSWORD: 'example' # TODO: Change this
volumes:
- "./config/my.conf:/etc/mysql/conf.d/config-file.cnf"
- "./data:/var/lib/mysql:rw"
Spring Boot 应用程序(后端)目前不使用 Docker,我在 Eclipse 中运行它。在启动后端之前,我必须为 IPAddress grep Docker 容器:
docker inspect mysql_ex_db_1 | grep 'IPAddress'
结果是这样的(这个确切的地址会不时改变)
"IPAddress": "",
"IPAddress": "172.21.0.2",
然后我取这个值,并在 Eclipse 中的文件Application.properties 中设置spring.datasource.url。
spring.datasource.url=jdbc:mysql://172.21.0.2:3306/employee_management_system?allowPublicKeyRetrieval=true&useSSL=false&createDatabaseIfNotExist=true
之后,我可以在 Eclipse 中启动后端,连接到数据库,一切正常。
现在我想将后端的启动从 Eclipse 移动到我用来启动数据库的同一个 docker-compose 文件中。因此我构建了一个图像,并附加了 docker-compose 文件:
version: '3.1'
services:
adminer:
image: adminer
restart: always
ports:
- 8888:8080
db:
image: mysql:latest
restart: always
environment:
MYSQL_ROOT_PASSWORD: 'example' # TODO: Change this
volumes:
- "./config/my.conf:/etc/mysql/conf.d/config-file.cnf"
- "./data:/var/lib/mysql:rw"
backend:
image: backend:latest
restart: always
ports:
- 8090:8080
在这种情况下,我该如何配置spring.datasource.url 中的IPAddress?
每当我重新启动 mysql 容器时,确切的 IPAddress 都会发生变化。
spring.datasource.url=jdbc:mysql://172.21.0.2:3306/employee_management_system?allowPublicKeyRetrieval=true&useSSL=false&createDatabaseIfNotExist=true
那么我应该写什么而不是'172.21.0.2'?
我在这里试过 localhost 但它 好像没用。
【问题讨论】:
标签: mysql spring spring-boot docker docker-compose