如何将 spring-boot 应用程序连接到 docker-compose 中的 mariadb?
How to connect a spring-boot app to mariadb in docker-compose?
如何让 spring-boot
应用程序与数据库容器通信,而不必将数据库容器端口暴露给主机系统?
docker-compose.yml
:
版本:'3.7'
服务:
app:
container_name: my_app
environment:
SPRING_DATASOURCE_URL: jdbc:mariadb://db:3306/dev
depends_on:
- db
db:
image: mariadb:10
environment:
MARIADB_ROOT_PASSWORD: root
MYSQL_USER: root
MYSQL_PASSWORD: rootpw
MYSQL_DATABASE: dev
volumes:
- db:/var/lib/mysql
#ports:
# - 3306:3306
volumes:
db:
我正在寻找一种方法,app + db 可以直接相互通信,但不必打开主机端口。
因为,如果我在 db
部分启用 3306:3306
端口,我会收到一条消息,指出该端口(在我的主机上)已被使用。这是有道理的,因为我 运行 是主机上的本地 mariadb
。
那么我如何才能在这两个容器之间直接共享端口,而不将端口暴露给主机系统呢?
我可能是缓存或卷的问题。在我清理了 docker 中的所有内容后,上面的示例就可以工作了。 不需要 显式公开端口以便spring 与db:3306
容器通信。
如何让 spring-boot
应用程序与数据库容器通信,而不必将数据库容器端口暴露给主机系统?
docker-compose.yml
:
版本:'3.7'
服务:
app:
container_name: my_app
environment:
SPRING_DATASOURCE_URL: jdbc:mariadb://db:3306/dev
depends_on:
- db
db:
image: mariadb:10
environment:
MARIADB_ROOT_PASSWORD: root
MYSQL_USER: root
MYSQL_PASSWORD: rootpw
MYSQL_DATABASE: dev
volumes:
- db:/var/lib/mysql
#ports:
# - 3306:3306
volumes:
db:
我正在寻找一种方法,app + db 可以直接相互通信,但不必打开主机端口。
因为,如果我在 db
部分启用 3306:3306
端口,我会收到一条消息,指出该端口(在我的主机上)已被使用。这是有道理的,因为我 运行 是主机上的本地 mariadb
。
那么我如何才能在这两个容器之间直接共享端口,而不将端口暴露给主机系统呢?
我可能是缓存或卷的问题。在我清理了 docker 中的所有内容后,上面的示例就可以工作了。 不需要 显式公开端口以便spring 与db:3306
容器通信。