2017-11-23 18 views
0

私は、AWS ECS上でリポジトリ、タスク、およびクラスタ管理を使用するセットアップアプリケーションを用意しています。 私Dockerfileは、これは私がAWS ECSリポジトリに設定したリポジトリですAWS ECS - Railsコンテナがmysqld.sock経由でリンクされたコンテナmysqlに接続できません

FROM ruby:2.4.1 
ENV LANG C.UTF-8 

RUN apt-get update && \ 
    apt-get install -y nodejs \ 
         vim \ 
         mysql-client --no-install-recommends && rm -rf /var/lib/apt/lists/* 


WORKDIR /tmp 
ADD ./Gemfile Gemfile 
ADD ./Gemfile.lock Gemfile.lock 
RUN bundle install 

ENV APP_ROOT /workspace 
RUN mkdir -p $APP_ROOT 
WORKDIR $APP_ROOT 
COPY . $APP_ROOT 

EXPOSE 3000 
CMD ["rails", "server", "-b", "0.0.0.0", "-e", "production"] 

です。

rails-appから互いに

linkedある私は二つの容器rail-appmysqlを設定しているタスクの先で

、私はRDS MySQLインスタンスに接続しようとしていますが、その投げ、次のエラーとして、私が持っています私が必要と思わない接続をサポートするためにmysqlコンテナを追加しました

クラスタに追加されたタスクでアプリケーションを実行すると、serviceとなります。両方のコンテナは正常に動作しますが、rails-appコンテナにはこのエラーがあります。

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (13)

私はdocker exec -it containerid bashrails c productionを実行すると、それが正常に動作し、適切にDBを接続しています。ここでもアクティブなレコードをテストすることができます

mysqlの量をレールアプリケーションと共有するためのソリューションを私に提供してください。私はここで自分の質問に答えるのです

答えて

0

私は、タスクのコンテナ部にENV変数を割り当てました。環境に正しくロードされなかったもの。​​とapplication.ymlを使用した場合環境ごとに変数を使用し始めました。

Mysqlは環境からホストを取得できませんでした