2016-10-06 16 views
2

こんにちは私は大きな問題があります。 私はレールとmysqlを別々のドッカーコンテナで実行しようとしています。私が持っているドッキングウィンドウ-compose.ymlで :docker-compose rails with mysql

私はアプリケーションを実行すると、私はエラーを得たdatabase.ymlの

development: 
    adapter: mysql2 
    encoding: utf8 
    database: zzz 
    pool: 5 
    username: root 
    password: zzz 
    host: database.dev //this is host for container with mysql 
    port: 3306 

エンド

version: '2' 
services: 
    db: 
    image: mysql 
    ports: 
     - "3307:3306" 
    environment: 
     MYSQL_ROOT_PASSWORD: zzz 
     MYSQL_USER: root 
     MYSQL_PASSWORD: zzz 
     MYSQL_DATABASE: zzz 
    web: 
    build: . 
    command: bundle exec rails s -p 3000 
    volumes: 
     - .:/app 
    ports: 
     - "3000:3000" 
    depends_on: 
     - db 

と私のレールで: Access denied for user 'root'@'xxx' (using password: YES) xxxは私のマシンではないコンテナをIPです場所。私はあなたがコンテナをlinkする必要が何をすべきか

+0

私のローカルマシン(レールs -p 9999 - > localhost:9999)からアクセスしようとすると、何がもっと役に立ちます –

答えて

4

知らない助けてください、これは動作するはずです:

version: '2' 
services: 
    db: 
    image: mysql 
    ports: 
     - "3307:3306" 
    environment: 
     MYSQL_ROOT_PASSWORD: zzz 
     MYSQL_USER: root 
     MYSQL_PASSWORD: zzz 
     MYSQL_DATABASE: zzz 
    web: 
    build: . 
    command: bundle exec rails s -p 3000 
    volumes: 
     - .:/app 
    ports: 
     - "3000:3000" 
    links: 
    - db:sql_srv 
    depends_on: 
     - db 

は今webコンテナはdbにリンクされているとsql_srvdbコンテナの別名です。あなたは、このアドレスを使用してwebコンテナからdbコンテナに到達する必要がありますsql_srv:3306

あなただけwebコンテナにごdbコンテナを接続する場合は、実際にdb容器にportsを指定する必要はありません。属性portsは、ホストからコンテナに到達するためにのみ使用されます。

+0

完全に動作します。あなたは私の一日を救った。ありがとう –