2016-05-21 5 views
0

ドッカーの作成リンクを修復する際に問題があります。 ruby​​ rack appとmysqlをリンクし、dbホスト名を解決しようとしています。docker-appとdbのリンクを作成します

ドッキングウィンドウ-compose.yml:雪の

version: '2' 
services: 
    db: 
    image: library/mysql:5.6.22 
    environment: 
     MYSQL_ROOT_PASSWORD: xxx 
     MYSQL_DATABASE: xxx 
     MYSQL_USER: xxx 
     MYSQL_PASSWORD: xxx 
    ports: 
     - "3306:3306" 
    restart: always 
    snow: 
    build: . 
    links: 
     - db 
    depends_on: 
     - db 
    ports: 
     - "9292:9292" 
    restart: always 

Dockerfile:

# Docker file for CentOS with RVM 
FROM centos:centos7 

MAINTAINER "XXXXX" 

RUN useradd -ms /bin/bash t_user 
RUN echo "t_user ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers 

WORKDIR "/home/t_user" 

RUN yum -y install curl which tar sudo wget git vim mysql-devel 

USER t_user 

## Install RVM + ruby 2.1.2 
RUN gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 
RUN curl -sSL https://get.rvm.io | bash -s stable 

ENV PATH /usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 

RUN /bin/bash -l -c "rvm requirements" 
RUN /bin/bash -l -c "rvm install ruby-2.1.2" 
RUN /bin/bash -l -c "gem install bundler --no-ri --no-rdoc" 

# Copy snow 
USER t_user 

WORKDIR /tmp 

ADD Gemfile Gemfile 
ADD Gemfile.lock Gemfile.lock 
RUN /bin/bash -l -c "bundle" 

WORKDIR "/home/t_user" 

RUN mkdir -p snow/current/ && mkdir -p snow/shared/config/ 
COPY . /home/t_user/snow/current/ 
RUN rm /home/t_user/snow/current/Dockerfile 

USER root 
RUN chown -R t_user.t_user snow/ 

USER trusteer 

WORKDIR /home/t_user/snow/current/ 
RUN /bin/bash -l -c "rake db:migrate" 
RUN chmod +x ./bin/runner 
ENTRYPOINT ["./bin/snow"] 

EXPOSE 9292 

私が実行しようとした後に-dをドッキングウィンドウを-構成取得エラーは、次のとおりです。

rake aborted! 
Mysql2::Error: Unknown MySQL server host 'db' (2) 
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/mysql2-0.4.4/lib/mysql2/client.rb:87:in `connect' 
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/mysql2-0.4.4/lib/mysql2/client.rb:87:in `initialize' 
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/connection_adapters/mysql2_adapter.rb:18:in `new' 
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/connection_adapters/mysql2_adapter.rb:18:in `mysql2_connection' 
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:438:in `new_connection' 
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:448:in `checkout_new_connection' 
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:422:in `acquire_connection' 
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:349:in `block in checkout' 
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:348:in `checkout' 
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:263:in `block in connection' 
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:262:in `connection' 
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:571:in `retrieve_connection' 
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/connection_handling.rb:113:in `retrieve_connection' 
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/connection_handling.rb:87:in `connection' 
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/migration.rb:916:in `initialize' 
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/migration.rb:823:in `new' 
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/migration.rb:823:in `up' 
/home/trusteer/.rvm/gems/ruby-2.1.2/gems/activerecord-4.2.6/lib/active_record/migration.rb:801:in `migrate' 
/home/trusteer/snow/current/Rakefile:10:in `block (2 levels) in <top (required)>' 
/home/trusteer/.rvm/gems/ruby-2.1.2/bin/ruby_executable_hooks:15:in `eval' 
/home/trusteer/.rvm/gems/ruby-2.1.2/bin/ruby_executable_hooks:15:in `<main>' 

ドッカーの情報:

Containers: 2 
Running: 1 
Paused: 0 
Stopped: 1 
Images: 72 
Server Version: 1.11.0 
Storage Driver: aufs 
Root Dir: /var/lib/docker/aufs 
Backing Filesystem: extfs 
Dirs: 110 
Dirperm1 Supported: false 
Logging Driver: json-file 
Cgroup Driver: cgroupfs 
Plugins: 
    Volume: local 
    Network: bridge null host 
Kernel Version: 3.13.0-58-generic 
Operating System: Ubuntu 14.04.4 LTS 
OSType: linux 
Architecture: x86_64 
CPUs: 4 
Total Memory: 7.507 GiB 
Name: galt-tp 
ID: DKCR:ZB6N:PW4O:76PF:UZPU:HVZO:XHL4:SRPM:6ACQ:M6T5:AZXN:KVPQ 
Docker Root Dir: /var/lib/docker 
Debug mode (client): false 
Debug mode (server): false 
Registry: https://index.docker.io/v1/ 
WARNING: No swap limit support 

リンクに関するドッカーのドキュメントがあり、関連するコンテナのDNSレコードがリンクディレクティブに追加されていると言われていますが、それは私には当てはまりません。

答えて

2

docker-compose v2では、リンクは必要ありません。すべてのコンテナが1つの共通ネットワーク(read more)で作成されます。そして、次の構成で、あなたは自分の名前でサービスを解決できます。

ping db 

を更新:

あなたが雪に問題がある

version: '2' 
services: 
    db: 
    image: library/mysql:5.6.22 
    environment: 
     MYSQL_ROOT_PASSWORD: xxx 
     MYSQL_DATABASE: xxx 
     MYSQL_USER: xxx 
     MYSQL_PASSWORD: xxx 
    ports: 
     - "3306:3306" 
    restart: always 
    snow: 
    build: . 
    depends_on: 
     - db 
    ports: 
     - "9292:9292" 
    restart: always 

は、たとえば、あなたが雪からデシベルコンテナにpingを実行することができますドッカーファイル。次の行に付いています。

このコマンドはイメージビルド段階で実行されることを理解しておいてください。この段階ではdbという名前のサービスはありません。 dbサービスは雪が降った後にのみ表示されます。 depends_onオプションdocでは、サービスの開始順序とビルド順序については何も記載していません。

解決策として、このコマンドでbashスクリプトを作成し、それをdockerfileのエントリポイントで実行することができます。

+0

私はまだ同じエラーがあります: Mysql2 ::エラー:不明なMySQLサーバーホスト 'db'(2) – gal

+0

@gal私の答えを更新しました。 – Cortwave

+0

さて、私は私の問題を発見した前に投稿しようとしましたが、stackoverflowは私をさせてくれませんでした:) とにかく、あなたは正しい、それは問題だった..私のnewbish :) 10x – gal

関連する問題