web-dev-qa-db-ja.com

DockerでMysqlを使用したSequel Pro

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

すべて正常に動作します。 Drupalをインストールしました。

問題は、SequelProを自分のDBに接続したいのですが、mysqlコンテナに接続できません。私はドッカー初心者です。

15
freemindghost

DBポートをホストに公開するのを忘れたため、単に追加します

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

次に、次を使用してSequel Proのデータベースに接続します。

user: root
password: root
Host: localhost
port: 3306

ホストでローカルmysqlデータベースが既に実行されている場合は、ポートを変更します

ports: 
  - "4306:3306"

そして、4306の代わりにポート3306に接続します。 Drupalコンテナから、まだ3306を使用することに注意してください。

31
Eugen Mayer

ホストポート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"

127.0.0.1:4306でdocker mysqlに接続できるはずです

mysql -u drupal -h 127.0.0.1 -P 4306 -p
8
Khaldoon Masud

私の場合、mysql:8に問題があり、任意の5に変更しても問題ありません

次のようになります。

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

(グローバルレベルの作業で環境変数を定義するかどうかはわかりません。おそらく、知っている人が私の答えをここで修正して簡素化できるかもしれません)

ご覧のとおり、mysql-serverとdrupal-webの2つのサービスがあります。 Drupal-webはデータベースサービスをリンクします。両方のサービスには、独自の環境変数があります。

0
chickahoona