在Azure中通过Docker bash运行Rails CLI命令

dsf9zpds  于 2023-01-21  发布在  Docker
关注(0)|答案(1)|浏览(142)

我有一个容器化的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来做这件事吗?

kknvjkwl

kknvjkwl1#

我认为环境变量不会自动传递给SSH会话,我不得不将它们添加到Docker映像启动脚本中

# This makes env variables available in the SSH session too.
eval $(printenv | sed -n "s/^\([^=]\+\)=\(.*\)$/export \1=\2/p" | sed 's/"/\\\"/g' | sed '/=/s//=\'\''/' | sed 's/$/\'\''/' >> /etc/profile)

检查this link

相关问题