2017-02-10 14 views
0

ドッカーに新しく、laradockを使用してCraft CMSプロジェクトで自分の環境をセットアップしています。私はそれをインストールしてセットアップすることができますが、laradockがdocker-compose.ymlファイルから作成するMySQLコンテナに接続しようとすると問題が発生します。Docker MySQLコンテナに接続するときに間違った資格情報

ここ

は、DB関連の部分は私のcraft/config/db.phpファイルの中で私の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" 

でだ、私は次の設定があります。

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エラーを取得しています。

私の質問は - ドッカーがMySQLコンテナを作成するとき、私はそれがdocker-compose.ymlファイルの資格情報を使ってそのデータベースにアクセスしていると仮定しています。その場合、私のコンテナが稼動していて、db.phpファイルの資格情報とdocker-compose.ymlファイルの資格情報が一致している限り、接続しないでください。

MySQLコンテナの資格情報を更新する場合は、両方のファイルの値を更新してdocker-compose up -d mysqlを実行するだけですか?

ありがとうございます!

+0

データベースホストがまだ設定されていません。 - アプリケーションサービスにデータベースサービスをリンクし、 'craft/config/db.php'のホスト名(あなたの場合は 'mysql')としてデータベースサービス名を使用します - データベースホストとしてドッカーブリッジアドレスを設定しますホスト(ポートセクション)にマップされたポートを使用します。 –

答えて

0

コンテナが「ランダム」な順序で開始されたため、私は最近、種類のの類似した問題が発生しています。たぶんこれはあなたの問題でもありません。

これは私のケースです。 - 2つの容器php-fpmmysqlです。

ソリューションは、新しいドッカーのComposeバージョンを使用する準備ができていなかったので、MySQLサーバに接続できませんでしたphp-fpmアプリケーション - - mysqlがGETサービス準備 のためのいくつかのものをしていた、その後によるようphp-fpm以外のすべてを構築docker-compose up -d --build --no-cacheを実行するには、最初に終了しました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

関連する問題