2017-11-23 13 views
0

AWS ECS에 리포지토리, 태스크 및 클러스터 관리와 함께 설치 프로그램이 있습니다. 내 Dockerfile이 내가 AWS ECS 저장소에 설정 한 저장소입니다AWS ECS - Rails Container가 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)

나는 그것이 잘 실행하고 커넥트가 제대로 DB rails c productiondocker exec -it containerid bash에서 실행

. 여기에 활성 레코드도 테스트 할 수 있습니다.

레일스 애플리케이션에 mysql 볼륨을 공유 할 수있는 작업 대상 솔루션을 제공해주십시오. 나는 여기에 내 자신의 질문에 대답하고

답변

0

,

나는 작업의 컨테이너 섹션에 ENV 변수를 할당했다. 환경에 제대로로드되지 않았습니다. figaroapplication.yml과 함께 사용했을 때 환경 변수를 사용하기 시작했습니다.

환경에서 호스트를 가져올 수 없습니다.