【发布时间】:2020-03-25 10:38:21
【问题描述】:
我正在尝试使用 docker-compose 在包含 memsql+java 后端的 Ubuntu 机器上启动 dockerized 环境。 我的 docker compose 文件如下所示:
version: "3.7"
services:
memsql:
image: memsql/quickstart
container_name: memsql
environment:
MEMSQL_ROOT_PASSWORD: passW
MEMSQL_DATABASE: db
ports:
- 3306:3306
- 9000:9000
volumes:
- ./memsql:/var/lib/memsql
backend:
build:
context: .
dockerfile: java-dockerfile
image: backend:1
container_name: backend
expose:
- "8080"
depends_on:
- memsql
volumes:
- ./logs:/external
command: ["java", "-jar", "server.jar", "-Xms1024m", " -Xmx2048m", "> /external/server.log"]
当我尝试启动它时,后端无法连接到我的 memsql 容器 - 它给出了连接被拒绝的错误。
memsql 容器本身正在运行,我可以访问它(docker exec -it memsql /bin/bash),查看日志(/memsql/master/tracelogs# cat memsql.log),登录它(mysql -u root -h 127.0.0.1 -P 3306 --prompt="memsql> ")。
确实,它不会创建指定的数据库,当我登录时,它也不会要求输入指定的密码。
我还尝试了不同的特定于网络的解决方案,例如使用定义的网络或将网络模式设置为“主机”,但它们都不起作用。 我怀疑这是一个与 memsql 相关的问题(是的,我知道我使用的图像被标记为已弃用),但似乎无法解决问题。在日志中我发现的唯一错误是:
ERROR: Thread 115082: Fn: Waiting for node to catch up with cluster state before starting replication management.
非常感谢任何帮助!
【问题讨论】:
-
如何将应用程序配置为连接到数据库?您可以使用主机上的
mysql命令行客户端连接到它吗? -
另请注意,Docker Hub memsql/quickstart page 有一个醒目的通知,表明该图像已被弃用。
-
@DavidMaze 我有一个 java 后端,在我的 application.yml 文件中我有
jdbcUrl: jdbc:mariadb://memsql:3306/db如果我使用 IP 并连接到另一台机器上的数据库,我的后端连接并且一切正常好的,所以由于某种原因没有看到容器。
标签: docker docker-compose singlestore