AWS ECS - Rails Container无法通过mysqld.sock连接链接容器mysql

时间:2017-11-23 09:41:58

标签: mysql docker ruby-on-rails-5 amazon-rds amazon-ecs

我在AWS ECS上设置了应用程序,包括存储库,任务和集群管理。 我的Dockerfile

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"]

这是我在AWS ECS存储库上设置的存储库。

在任务目的地中,我设置了两个容器rail-appmysql,彼此为linked

rails-app开始,我正在尝试连接RDS mysql实例,但由于它抛出以下错误,我添加了mysql容器以支持我认为不需要的连接以及

当我在群集service中运行添加了任务的应用程序时。两个容器运行正常,但在rails-app容器上我收到此错误。

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

当我在rails c production下运行docker exec -it containerid bash时,它运行正常并正确连接数据库。在这里我也可以测试活动记录

请在任务目的地为我提供一个解决方案,以便将mysql的数量分享给rails应用程序。

1 个答案:

答案 0 :(得分:0)

我在这里回答我自己的问题,

我已在任务的容器部分分配了env变量。哪些没有正确加载到环境中。当我使用figaroapplication.yml时,它已根据环境开始使用变量。

Mysql无法从环境中获取主机