2017-02-10 81 views
0

Docker的新手和我正在使用laradock通過Craft CMS項目設置我的環境。我能夠安裝並設置,但是當我嘗試連接到laradock從docker-compose.yml文件創建的MySQL容器時,我遇到了問題。連接到Docker MySQL容器時憑據錯誤

下面是相關的部分數據庫在我docker-compose.yml

mysql: 
    build: 
     context: ./mysql 
     args: 
      - MYSQL_DATABASE=homestead 
      - MYSQL_USER=homestead 
      - MYSQL_PASSWORD=secret 
      - MYSQL_ROOT_PASSWORD=root 
    volumes: 
     - mysql:/var/lib/mysql 
    ports: 
     - "3306:3306" 

在我的craft/config/db.php文件,我有以下設置:

return array(  
    '.dev' => array(
    'tablePrefix' => 'craft', 
    'server' => 'mysql', 
    'database' => 'homestead', 
    'user' => 'homestead', 
    'password' => 'secret', 
), 
); 

不過,我得到一個Craft can’t connect to the database with the credentials in craft/config/db.php錯誤。

我的問題是 - 當docker創建MySQL容器時,我假定它使用docker-compose.yml文件中的憑據來創建並允許訪問該數據庫。如果是這樣,只要我的容器正在運行,並且我的db.php文件中的憑據與docker-compose.yml文件中的憑據相匹配,是否應該不連接?

如果我想更新MySQL容器中的憑證,我可以只更新這兩個文件中的值並運行docker-compose up -d mysql

謝謝!

+0

您仍然想念配置中的數據庫主機。 您可以: - 將數據庫服務鏈接到您的應用服務,並在'craft/config/db.php'中使用數據庫服務名稱作爲主機名(在您的情況下爲'mysql') - 將docker橋地址設置爲數據庫主機並使用映射到主機(端口部分)的端口。 –

回答

0

我最近在上運行,因爲容器是以「隨機」順序啓動的。也許這是你的問題,不知道肯定。

簡而言之,這是我的情況: - 兩個容器php-fpmmysql。 - 運行docker-compose up -d --build --no-cache建立的一切,但php-fpm首先完成這麼屆時mysql在做一些東西爲獲取服務準備 - php-fpm應用程序無法連接到MySQL服務器,因爲還沒有準備好

該解決方案使用新的泊塢窗撰寫版本並在docker-compose.yml上使用2.1。這是我的工作例如:

version: '2.1' 
services: 
    php-fpm: 
     build: 
      context: docker/php-fpm 
     depends_on: 
      db: 
       condition: service_healthy 
    db: 
     image: mariadb 
     healthcheck: 
      test: "exit 0" 
     environment: 
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} 
      MYSQL_DATABASE: ${MYSQL_DATABASE} 
      MYSQL_USER: ${MYSQL_USER} 
      MYSQL_PASSWORD: ${MYSQL_PASSWORD} 

訣竅:depends_oncheck here)和condition(查看示例)。

+0

對不起,上面顯示的代碼顯示了我不確定的內容:爲什麼我們在docker-compose.yml文件中看到例如MYSQL_ROOT_PASSWORD:$ {MYSQL_ROOT_PASSWORD}?這個$ {MYSQL_ROOT_PASSWORD}存儲在哪裏?似乎有些人已將密碼存儲在此文件中。或者是否引用.env文件?非常感謝! – nadir

+0

@nadir在這種情況下,我說的是在'.env'文件中將密碼存儲在純文本中,但是有更好的策略,這裏有一個簡單的策略 – ReynierPM

+0

謝謝你的回答ReynierPM。順便說一下,我找到了解決方案。因此,對於任何人在laradock上對PhpMyAdmin提出同樣問題:host = mysql/user = root/password = root – nadir

相關問題