【发布时间】:2019-01-17 20:07:25
【问题描述】:
情况如下:
当我使用
在本地 (docker-compose) 运行 MySQL 5.7 docker 映像时container_name: test-mysql-docker
它工作正常。我在另一个 docker 容器中的 JDBC 程序可以通过 container_name 访问 MySQL 容器。
但是,当我将该 MySQL 5.7 映像推送到我的 docker hub 帐户,然后尝试在单独的命令窗口中运行它时,它不起作用(请参阅下面我使用的运行命令)。问题:在另一个docker容器中运行的JDBC程序无法访问它,并给出“尝试了3次”的错误信息。
因此,我认为我在下面的运行命令中的语法不正确。从下面的运行命令下载 MySQL 后,我可以从 docker 外部访问 MySQL 容器,因此它已启动并且我需要的数据就在那里。因此我在想,只是container_name有问题,但是在这里寻找专家给我一些想法。
这是我的运行命令,它成功关闭了 MySQL 5.7 映像(可在 docker 外部访问,但不能从另一个 docker 容器访问,因为使用“docker-compose up”在本地运行时)
$ docker run -it -p 3307:3306 --name test-mysql-docker -v /Users/.../ZipCodeLookup.sql:/docker-entrypoint-initdb.d/ZipCodeLookup.sql -e MYSQL_ROOT_PASSWORD=thepass docker-account/mysql:5.7
我假设从 docker hub 运行一个 docker 容器,我需要按照上面的命令手动指定所有参数(使用 docker-compose 时我不必这样做)。
任何人都可以看到上面的运行命令有什么问题或可能缺少什么会阻止另一个容器通过 JDBC 访问使用“test-mysql-docker”作为容器名称的 MySQL 容器吗?
非常感谢,
【问题讨论】:
-
在容器中,你访问MySQL的url是什么?
-
工作 JDBC 字符串,如果我使用 docker-compose 运行两个容器:final String DATABASE_URL = "jdbc:mysql://test-mysql-docker:3306/ZipCodeLookup?useSSL=false&" + "serverTimezone= America/New_York&user=root&password=thepass&autoReconnect=true";
标签: docker jdbc docker-compose