【Docker系列】容器访问宿主机的Mysql
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨。
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
- 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
- 导航
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨
一.问题
在宿主机上安装了 mysql,但是没有开通公网 ip 的访问权限,如何在同一台服务器上在部署服务的时候,使用宿主机的 mysql 呢?
配置文件:
server:
port: 8080
spring:
application:
name: DemoApp
# jpa:
# database: MYSQL
# database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
# show-sql: true
# hibernate:
# ddl-auto: none
datasource:
url: jdbc:mysql://localhost:3306/produce_demo_test?useSSL=false&serverTimezone=UTC&useUnicode=true&characterEncoding=utf8
username: root
password: xxxx
driver-class-name: com.mysql.cj.jdbc.Driver
redis:
host: localhost
database: 0
port: 6379
password: 123456
ssl: false
lettuce:
pool:
max-active: 1000
max-wait: -1
max-idle: 10
min-idle: 5
二.实现
1.启动脚本
#!/bin/bash
CONTAINER_NAME=produce-demo-test
IMAGE_NAME=produce-demo:latest
docker rm -f ${CONTAINER_NAME}
docker run -d --network=host --name "${CONTAINER_NAME}" \
--privileged=true --env PROFILE=test -w /home -p 8080:8080 -v "$PWD/logs:/home/logs" --restart=always "${IMAGE_NAME}"
docker logs -f --tail 500 "${CONTAINER_NAME}"
2.参数说明
--network=host
是在 Docker 命令中指定的一个选项,它具有以下作用:
当您在 Docker 中运行容器时,默认情况下,每个容器都会有自己的网络命名空间,这意味着容器内部和宿主机之间的网络是隔离的。容器中的应用程序可以通过 Docker 网络进行通信,但它们无法直接访问宿主机的网络。
使用 --network=host
选项可以使容器与宿主机共享网络命名空间。这样,容器内的应用程序可以像它们直接运行在宿主机上一样访问宿主机的网络接口。
具体而言,--network=host
的作用如下:
- 容器可以使用宿主机的 IP 地址。
- 容器中的应用程序可以使用宿主机上打开的端口。
- 容器可以直接访问宿主机上的网络设备,如网络接口卡。
这种模式对于需要与宿主机紧密集成的应用程序非常有用,例如需要绑定宿主机上特定端口的应用程序或需要访问宿主机上的网络设备的应用程序。
需要注意的是,使用 --network=host
选项会使容器丧失网络隔离的优势,因此需要谨慎使用,并确保对容器内部的网络安全进行适当的配置和保护。
觉得有用的话点个赞
👍🏻
呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙
更多推荐
所有评论(0)