在 Docker 中使用 Mysql 的 Sequel Pro

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/38914665/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-31 21:57:54  来源:igfitidea点击:

Sequel Pro with Mysql in Docker

mysqldockersequelpro

提问by freemindghost

I build 2 docker container with docker-compose. I use Docker on Mac, no boot2docker.

我用 docker-compose 构建了 2 个 docker 容器。我在 Mac 上使用 Docker,没有 boot2docker。

version: '2'
    services:
        drupal-web:
            image: drupal:latest
        ports:
            - "8080:80"
    depends_on:
            - mysql-server
    links:
            - mysql-server:mysql
    mysql-server:
        image: mysql
    environment:
        MYSQL_DATABASE: drupal
        MYSQL_ROOT_PASSWORD: root
        MYSQL_USER: drupal
        MYSQL_PASSWORD: drupal

Everything works fine. I install Drupal successfully.

一切正常。我成功安装了 Drupal。

The problem is: I would like to connect SequelPro to my DB, but i dont get a connection to the mysql container. I'm a docker beginner.

问题是:我想将 SequelPro 连接到我的数据库,但我没有连接到 mysql 容器。我是码头初学者。

回答by Eugen Mayer

You forgot to expose your DB port to the host, so simply add

您忘记将数据库端口公开给主机,因此只需添加

mysql-server:
    image: mysql
    ports: 
      - "3306:3306"
    environment:
        MYSQL_ROOT_PASSWORD: root
        MYSQL_DATABASE: drupal
        MYSQL_USER: drupal
        MYSQL_PASSWORD: drupal

And then connect to the database in Sequel Pro using:

然后使用以下命令连接到 Sequel Pro 中的数据库:

user: root
password: root
host: localhost
port: 3306

If you already have a local mysql database running on your host, change the port

如果您的主机上已经运行了本地 mysql 数据库,请更改端口

ports: 
  - "4306:3306"

and then connect to port 4306instead of 3306. Be aware, from the Drupal container, you will still use 3306

然后连接到端口4306而不是3306. 请注意,从 Drupal 容器中,您仍将使用3306

回答by Khaldoon Masud

Map host port 4306 (or any other available port) to docker mysql 3306 like:

将主机端口 4306(或任何其他可用端口)映射到 docker mysql 3306,例如:

mysql-server:
        image: mysql
    environment:
        MYSQL_DATABASE: drupal
        MYSQL_ROOT_PASSWORD: root
        MYSQL_USER: drupal
        MYSQL_PASSWORD: drupal
    ports:
      - "4306:3306"

You should be able to connect to docker mysql with 127.0.0.1:4306

您应该能够使用 127.0.0.1:4306 连接到 docker mysql

mysql -u drupal -h 127.0.0.1 -P 4306 -p

回答by Дмитрий Миронов

In my case i has problem with mysql:8, change to any 5 and all is ok

就我而言,我的 mysql:8 有问题,更改为任意 5 就可以了

回答by chickahoona

Should look a bit more like this:

应该看起来更像这样:

version: '2'
services:
    mysql-server:
        image: mysql
        environment:
            MYSQL_ROOT_PASSWORD: root
            MYSQL_DATABASE: drupal
            MYSQL_USER: drupal
            MYSQL_PASSWORD: drupal

    drupal-web:
        image: drupal:latest
        ports:
            - "8080:80"
        depends_on:
            - mysql-server
        links:
            - mysql-server:mysql-server
        environment:
            MYSQL_DATABASE: drupal
            MYSQL_USER: drupal
            MYSQL_PASSWORD: drupal

(Im not sure if defining the environment variables on a global level work, maybe someone who knows can correct my answer here and simplify it)

(我不确定在全局级别定义环境变量是否有效,也许知道的人可以在这里纠正我的答案并简化它)

As you can see, you have 2 services, mysql-server and drupal-web. Drupal-web links your database service. Both services have their own environment variables.

如您所见,您有 2 个服务,mysql-server 和 drupal-web。Drupal-web 链接您的数据库服务。这两个服务都有自己的环境变量。