【问题标题】:AWS ECS - Rails Container is not able to connect linked container mysql via mysqld.sockAWS ECS - Rails Container 无法通过 mysqld.sock 连接链接容器 mysql
【发布时间】:2017-12-04 22:14:40
【问题描述】:

我在 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)

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

请在任务目的地为我提供一个解决方案,以将 mysql 的卷共享到 rails 应用程序。

【问题讨论】:

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


    【解决方案1】:

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

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

    Mysql 无法从环境中获取主机

    【讨论】:

      猜你喜欢
      • 2016-07-06
      • 1970-01-01
      • 2018-01-25
      • 1970-01-01
      • 2020-02-10
      • 1970-01-01
      • 2017-11-08
      • 2016-02-17
      • 1970-01-01
      相关资源
      最近更新 更多