将 SQL 服务器与 docker 容器中的 liferay 实例 运行 链接
Linking a SQL Server with a liferay instance running in a docker container
正如标题所说,我正在尝试 运行 liferay 在 docker 容器的一侧。然后从那里连接到外部节点上的数据库。
我可以从 docker 容器内成功 ping SQL 服务器正在 运行ning 的服务器,但是,当我尝试通过 liferay 的配置连接到数据库时界面,它只是说无法建立连接,并且用户登录失败的日志状态。
如果不可能,我理解,只是想更好地了解这个小混乱。
=========================================== =========================
请注意,我一直在为 liferay 使用 snasello's docker 图像,除了取出预配置的数据库以强制 liferay 转到配置页面。我用
启动容器
docker run --rm -it -i 8080:8080 {whatever the local name of the image is}
00:00:34,301 WARN [C3P0PooledConnectionPoolManager[identityToken->21r35xoL]-HelperThread-#6][BasicResourcePool:1851] com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@3b17c58d -- 采集尝试失败!!!清算待定收购。在尝试获取所需的新资源时,我们未能成功超过允许的最大获取尝试次数 (3)。上次获取尝试异常:
java.sql.SQLException: 无法打开登录请求的数据库 "lportal"。登录失败。
在 net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:368)
在 net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2820)
在 net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2258)
在 net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:603)
在 net.sourceforge.jtds.jdbc.ConnectionJDBC2.(ConnectionJDBC2.java:345)
在 net.sourceforge.jtds.jdbc.ConnectionJDBC3.(ConnectionJDBC3.java:50)
在 net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184)
在 com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:146)
在 com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:195)
在 com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:211)
在 com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1086)
在 com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess (BasicResourcePool.java:1073)
在 com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:44)
在 com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1810)
在 com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:648)
00:00:34,301 WARN [C3P0PooledConnectionPoolManager[identityToken->21r35xoL]-HelperThread-#6][BasicResourcePool:894] 获取资源失败,com.mchange.v2.resourcepool.BasicResourcePool@80d65ef 正在中断所有等待资源检出的线程。将再次尝试响应新的客户端请求。
00:00:34,303 WARN [C3P0PooledConnectionPoolManager[identityToken->21r35xoL]-HelperThread-#9][BasicResourcePool:894] 获取资源失败,com.mchange.v2.resourcepool.BasicResourcePool@80d65ef 正在中断所有等待资源检出的线程。将再次尝试响应新的客户端请求。
00:00:34,304 WARN [C3P0PooledConnectionPoolManager[identityToken->21r35xoL]-HelperThread-#1][BasicResourcePool:894] 获取资源失败,com.mchange.v2.resourcepool.BasicResourcePool@80d65ef 正在中断所有等待资源检出的线程。将再次尝试响应新的客户端请求。
您应该使用 --link docker 标志 link 将 mysql 容器添加到 liferay 容器。您提供给 mysql 容器的别名应该是 db_lep。
docker run -d --name mysqldb --env-file=.crendentials mysql
docker run -d --link mysqldb:db_lep -p 8080:8080 {whatever the local name of the image is}
如果您看到 https://github.com/snasello/docker-liferay-6.2/blob/master/lep/portal-bd-MYSQL.properties,则数据库的主机是 db_lep。如果您提供自己的属性文件,那么您应该将别名更改为属性中的任何内容。如果您使用的是本地主机,那么您应该让容器共享同一个网络(本地主机)而不是 linking。
重新检查错误,发现 SQL 服务器的身份验证存在问题。通过 this helpful post 解决。
谢谢大家!
正如标题所说,我正在尝试 运行 liferay 在 docker 容器的一侧。然后从那里连接到外部节点上的数据库。
我可以从 docker 容器内成功 ping SQL 服务器正在 运行ning 的服务器,但是,当我尝试通过 liferay 的配置连接到数据库时界面,它只是说无法建立连接,并且用户登录失败的日志状态。
如果不可能,我理解,只是想更好地了解这个小混乱。
=========================================== =========================
请注意,我一直在为 liferay 使用 snasello's docker 图像,除了取出预配置的数据库以强制 liferay 转到配置页面。我用
启动容器docker run --rm -it -i 8080:8080 {whatever the local name of the image is}
00:00:34,301 WARN [C3P0PooledConnectionPoolManager[identityToken->21r35xoL]-HelperThread-#6][BasicResourcePool:1851] com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@3b17c58d -- 采集尝试失败!!!清算待定收购。在尝试获取所需的新资源时,我们未能成功超过允许的最大获取尝试次数 (3)。上次获取尝试异常: java.sql.SQLException: 无法打开登录请求的数据库 "lportal"。登录失败。 在 net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:368) 在 net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2820) 在 net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2258) 在 net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:603) 在 net.sourceforge.jtds.jdbc.ConnectionJDBC2.(ConnectionJDBC2.java:345) 在 net.sourceforge.jtds.jdbc.ConnectionJDBC3.(ConnectionJDBC3.java:50) 在 net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184) 在 com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:146) 在 com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:195) 在 com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:211) 在 com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1086) 在 com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess (BasicResourcePool.java:1073) 在 com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:44) 在 com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1810) 在 com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:648) 00:00:34,301 WARN [C3P0PooledConnectionPoolManager[identityToken->21r35xoL]-HelperThread-#6][BasicResourcePool:894] 获取资源失败,com.mchange.v2.resourcepool.BasicResourcePool@80d65ef 正在中断所有等待资源检出的线程。将再次尝试响应新的客户端请求。 00:00:34,303 WARN [C3P0PooledConnectionPoolManager[identityToken->21r35xoL]-HelperThread-#9][BasicResourcePool:894] 获取资源失败,com.mchange.v2.resourcepool.BasicResourcePool@80d65ef 正在中断所有等待资源检出的线程。将再次尝试响应新的客户端请求。 00:00:34,304 WARN [C3P0PooledConnectionPoolManager[identityToken->21r35xoL]-HelperThread-#1][BasicResourcePool:894] 获取资源失败,com.mchange.v2.resourcepool.BasicResourcePool@80d65ef 正在中断所有等待资源检出的线程。将再次尝试响应新的客户端请求。
您应该使用 --link docker 标志 link 将 mysql 容器添加到 liferay 容器。您提供给 mysql 容器的别名应该是 db_lep。
docker run -d --name mysqldb --env-file=.crendentials mysql
docker run -d --link mysqldb:db_lep -p 8080:8080 {whatever the local name of the image is}
如果您看到 https://github.com/snasello/docker-liferay-6.2/blob/master/lep/portal-bd-MYSQL.properties,则数据库的主机是 db_lep。如果您提供自己的属性文件,那么您应该将别名更改为属性中的任何内容。如果您使用的是本地主机,那么您应该让容器共享同一个网络(本地主机)而不是 linking。
重新检查错误,发现 SQL 服务器的身份验证存在问题。通过 this helpful post 解决。
谢谢大家!