AWS ECS - Rails 容器无法通过 mysqld.sock 连接链接容器 mysql
AWS ECS - Rails Container is not able to connect linked container mysql via mysqld.sock
我在 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-app
和 mysql
,它们彼此 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 应用程序。
我在这里回答我自己的问题,
我已经在任务的容器部分分配了环境变量。哪些未正确加载到环境中。当我将 figaro
与 application.yml
一起使用时,它已开始根据环境使用变量。
Mysql 无法从环境
获取主机
我在 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-app
和 mysql
,它们彼此 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 应用程序。
我在这里回答我自己的问题,
我已经在任务的容器部分分配了环境变量。哪些未正确加载到环境中。当我将 figaro
与 application.yml
一起使用时,它已开始根据环境使用变量。
Mysql 无法从环境
获取主机