Ben*_*ean 11 mysql docker docker-compose
通过docker-compose.yml我能够运行该应用程序.现在我们要将应用程序移动到生产环境,但我们不想使用容器数据库.那么有什么方法可以将我的本地MySQL数据库与应用程序连接使用docker-compose?
我的docker-compose.yml看起来像:
version: '3'
services:
web-app:
build:
context: .
dockerfile: web-app/Dockerfile
ports:
- 8080:8080
links:
- app-db
app-db:
build:
context: .
dockerfile: app-db/Dockerfile
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=Optimize
ports:
- 3306:3306
Run Code Online (Sandbox Code Playgroud)
而不是app-db部分我只想连接到我的本地托管mysql数据库.
Júl*_*lbo 65
只需使用host.docker.internal代替localhost.
Rob*_*ert 28
在docker网络中找到主机ip.如果您使用docker-compose.yml,version: "3"则可能是IP为:172.18.0.1,但确认它正在搜索容器(您的主机)的"网关":
docker inspect <container-id-or-name> | grep Gateway
"Gateway": "",
"IPv6Gateway": "",
"Gateway": "172.18.0.1",
"IPv6Gateway": "",
Run Code Online (Sandbox Code Playgroud)
所以在你的docker应用程序中指向MySQL :( 172.18.0.1:3306可能在配置文件中).考虑到只要docker网络仍然相同(通过docker-compose创建网络,并且除非你这样做,它不被删除docker-compose down),IP是固定的
另外,检查您的MySQL是否正在侦听其所有接口.在您的my.cnf搜索bind-address中应该是0.0.0.0(如果您的服务器具有公共IP,请考虑安全问题).
作为替代方案,您可以为容器带来与主机相同的网络,以便共享localhost,因此容器将在那里找到mysql.使用网络模式作为"主机":
version: '3'
services:
web-app:
build:
context: .
dockerfile: web-app/Dockerfile
ports:
- 8080:8080
network_mode: "host"
Run Code Online (Sandbox Code Playgroud)
然后,指向你hibernate.properties的mysql,如下所示:localhost:3306
小智 8
使用 mysqld.cnf 允许权限
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 0.0.0.0
Run Code Online (Sandbox Code Playgroud)
保存您的文件并重新启动 mysql 服务器
sudo systemctl restart mysql.service
Run Code Online (Sandbox Code Playgroud)
登录Mysql
mysql -h localhost -u root -p
GRANT ALL ON *.* TO 'root'@'localhost' IDENTIFIED BY 'yourpassword' WITH GRANT OPTION;
GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY 'yourpassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
Run Code Online (Sandbox Code Playgroud)
查找您的 IP
ip addr show
Run Code Online (Sandbox Code Playgroud)
并在您的 docker 容器 192.168.xx 中使用它
小智 6
最简单的方法是host.docker.internal使用localhost。
MONGO_SERVER = {
'host': 'host.docker.internal',
'port': 27017,
'username': 'admin',
'password': '123456'}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21709 次 |
| 最近记录: |