【发布时间】:2018-01-25 17:37:04
【问题描述】:
我在 vm 中安装了 Ubuntu 16.04,我正在尝试在 docker 容器中运行应用程序并将其连接到主机上的 MySQL 数据库
我有这样的东西......在我有 MySQL 的主机上:
当我尝试将我的应用程序连接到 MySQL 时,我得到了这个:
java.sql.exception: 无法创建 poolableConnectionFactory(无法创建与数据库服务器的连接。尝试重新连接 3 次
我使用 docker-compose 执行我的应用程序:
version: '2'
services:
exo:
image: exoplatform/exo-community:5.0
environment:
EXO_DB_TYPE: mysql
EXO_DB_NAME: user
EXO_DB_USER: root
EXO_DB_PASSWORD: "my-pass"
EXO_DB_HOST: "127.0.0.1"
EXO_ADDONS_LIST: exo-jdbc-driver-mysql
expose:
- "8080"
- "3306"
ports:
- "8080:8080"
volumes:
- exo_data:/srv/exo
- exo_logs:/var/log/exo
volumes:
exo_data:
external:
name: exo_data
exo_logs:
external:
name: exo_logs
networks:
default:
driver: bridge
如您所见,我尝试连接到 MySQL 默认端口...而且我刚刚看到 3306 端口正在侦听主机。
我还尝试添加以下行(在另一篇文章中看到)
在 my.cnf 我有绑定地址 0.0.0.0。
MySQL 正在运行:
root@xxx/# mysqladmin -u root -p status
Uptime: 4784 Threads: 4 Questions: 17 Slow queries: 0 Opens: 114 Flush tables: 1 Open tables: 33 Queries per second avg: 0.003
我在桥上使用 docker,所以我想我只需要在 docker composer 上添加端口即可连接 docker 和主机。但似乎没有任何效果。有人能指出我正确的方向吗?
【问题讨论】:
-
我认为您需要指定 IP 地址并为您的 DB GRANT ALL ON fooDatabase 授予权限。* TO fooUser@'1.2.3.4' IDENTIFIED BY 'my_password';
-
mysql 没有在容器中运行对吧?
标签: mysql docker ubuntu-16.04