我有一个容器化的rails应用程序,部署在Azure的一个应用服务上,我为我的docker启用了SSH,以便手动运行一些rakes,并执行rails CLI命令。
问题:通过Azure门户中的SSH登录不允许我运行任何命令(rakes,migrates等)。
我总是遇到命令not found的错误,即使应用程序已经成功部署并运行,所以这一定意味着rails和所有gem都安装在某个地方,bundler和ruby沿着安装在docker容器中。
我的停靠文件:
FROM ruby:2.6.3
....
WORKDIR /app
COPY . /app
ENV RAILS_ENV production
ENV RAILS_SERVE_STATIC_FILES true
ENV RAILS_LOG_TO_STDOUT true
ADD Gemfile /app
ADD Gemfile.lock /app
RUN gem install bundler
RUN bundle config set --local without 'test' --with runtime --deployment
RUN bundle install
EXPOSE 3000 80 2222
RUN ["chmod","+x","entrypoint.sh"]
ENTRYPOINT ["./entrypoint.sh"]
任何帮助都是高度赞赏!
我试着执行哪个ruby,然后在gems文件夹中查找,但只找到了bundler。我试着设置GEM_HOME和GEM_PATH指向我的本地应用,但bundler再次安装在那里,而所有其他gem都不见了。
执行which/locate rails找不到安装,当我尝试运行bin/rails时,它抱怨其他gem没有安装/
这里有什么问题?我应该通过Azure来做这件事吗?
1条答案
按热度按时间kknvjkwl1#
我认为环境变量不会自动传递给SSH会话,我不得不将它们添加到Docker映像启动脚本中
检查this link。