从 Table Plus 连接到我的本地 docker 数据库实例

Posted

技术标签:

【中文标题】从 Table Plus 连接到我的本地 docker 数据库实例【英文标题】:Connecting to my local docker Database Instance from Table Plus 【发布时间】:2019-08-08 11:14:34 【问题描述】:

我创建了一个本地 docker wordpress 实例,我正在尝试使用 SQL 客户端(在我的情况下为 TablePlus)连接到数据库,但我遇到了问题。

我从此处显示的 docker-compose.yml 文件创建了 docker 容器:

version: '3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8028:80"
       - "8029:8029"

     volumes:
       - ./themes/travelmatic:/var/www/html/wp-content/themes/yadayada


     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       VIRTUAL_HOST: leasepilot.local

volumes:
    db_data:

我在这些领域尝试了 wordpress 和 somewordpress 的任何组合:

我也可以选择通过 SSH 连接,但我觉得我不需要这样做?

1) 调试此类问题的最佳方法是什么? 2)什么是信用?哈哈

【问题讨论】:

如果没有 ports: 声明,您的数据库将无法从 Docker 外部访问。查找凭据留作练习。 【参考方案1】:

还有一点信息应该添加到 Praveen 的答案中。 如果您已经在本地安装了 mysql,请在您的计算机/笔记本电脑上,将 db 端口设置为:

- "3306:3306" 

它不起作用,因为 TablePlus 将连接到您的本地 mysql 实例。 相反,您应该将 Docker mysql 设置在不同的已发布端口上并从 TablePlus 访问它。

例如,在您的 Dockerfile 上设置这些端口(发布的端口是 3356):

"3356:3306"

然后在 TablePlus 上设置相同的端口:

【讨论】:

【参考方案2】:

正如 David 在他的评论中所建议的,您需要在 docker-compose.yml 中添加端口映射。因此,您修改后的 docker-compose.yml 将是这样的:

version: '3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress
     ports:
       - "3306:3306"   
   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8028:80"
       - "8029:8029"

     volumes:
       - ./themes/travelmatic:/var/www/html/wp-content/themes/yadayada


     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       VIRTUAL_HOST: leasepilot.local

volumes:
    db_data:

并且您已经在环境变量中的 docker-compose.yml 中提供了凭据。

【讨论】:

以上是关于从 Table Plus 连接到我的本地 docker 数据库实例的主要内容,如果未能解决你的问题,请参考以下文章

Moto G5 Plus无法通过Socket连接到本地服务器

VB - 连接到本地 SQL 服务器并从 excel 将数据加载到表中

如何从 EC2 连接到本地 ***?

从 Flutter 应用通过本地网络连接到 Firebase 函数模拟器

从 Flutter 应用程序连接到本地 Firebase 函数模拟器时出错

如何从 AWS SAM 本地 docker 实例连接到主机 MySQL?