簡體   English   中英

無法在Docker映像中連接到MySQL

[英]Can't connect to MySQL inside docker image

我已經找到了與此主題相關的一些主題,但是沒有一個主題可以幫助我,因為我已經做了提供的解決方案,或者問題與我的不完全相同。


我有一個帶有nginx / php-fpm等服務器的docker環境,並且正在使用我要鏈接到其他服務器的官方mysql映像。 這是我的碼頭工人組成

db:
    image: mysql
    ports:
    - "3306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=symfonyrootpass
      - MYSQL_DATABASE=symfony
      - MYSQL_USER=symfony
      - MYSQL_PASSWORD=symfonypass

project:
    image: docker.io/project/project-dev
    ports:
    - "80:80"
    environment:
      - XDEBUG_HOST=${LOCAL_IP}
      - XDEBUG_PORT=9000
      - XDEBUG_REMOTE_MODE=req
    links:
    - db
    volumes:
    - ../project:/var/www/app

當我啟動它並像這樣從主機連接時: mysql -h127.0.0.1 -usymfony -psymfonypass ,然后使用use symfony; 它沒有問題。 我看到我的數據庫,可以編輯,刪除,更新等。我可以做所有事情。

但是,我不能對docker說同樣的話。 我正在使用Symfony,並且在正確設置參數后,總是會收到錯誤消息

驅動程序中發生異常:SQLSTATE [HY000] [2002]連接被拒絕

這些是我的參數

database_host: 127.0.0.1
database_port: null
database_name: symfony
database_user: symfony
database_password: symfonypass

我已經嘗試將database_host更改為localhost但是隨后出現錯誤No such file or directory具有相同的SQLSTATE。 我也嘗試將端口設置為3306但這也無濟於事。

從docker內部訪問我的數據庫需要做什么?

這是config.yml中描述我的mysql連接的部分

原則配置

doctrine:
    dbal:
        driver:   pdo_mysql
        host:     "%database_host%"
        port:     "%database_port%"
        dbname:   "%database_name%"
        user:     "%database_user%"
        password: "%database_password%"
        charset:  UTF8
        server_version: "%database_version%"

您的數據庫運行在與項目不同的容器中。 Docker-compose將為它提供一個IP地址和一個主機名,即db,因為這是您命名的方式。 因此, database_host不應為127.0.0.1或localhost,而應為db

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM