【问题标题】:What is the proper way to update the Ruby bin folder for a docker container?更新 Docker 容器的 Ruby bin 文件夹的正确方法是什么?
【发布时间】:2017-03-03 20:39:06
【问题描述】:

我一直在尝试将现有的 Ruby on Rails 应用程序转换为在 docker 容器中开发。我不明白在哪里最好合并rake rails:update:bin 命令。我试图将它作为 dockerfile 的最后一行,但容器无法正常启动。我可以让容器启动的唯一方法是在图像构造之外构建 bin,以便使用 ADD 命令拉入 bin 文件夹。

是否可以创建一个 dockerfile 来做所有事情?


Docker 文件如下所示

FROM ruby:2.2
RUN apt-get update && apt-get install -y \
    build-essential \
    libpq-dev \
    nodejs
RUN mkdir /MyApp
WORKDIR /MyApp
ADD Gemfile /MyApp/Gemfile
ADD Gemfile.lock /MyApp/Gemfile.lock
RUN bundle install
ADD . /MyApp

我想将以下行添加到末尾。

RUN rake rails:update:bin

当我尝试包含rake 命令时,我正在重建图像,而MyApp 文件夹中没有bin 文件夹。当我关闭rake 命令时,我正在使用bin 文件夹重建图像。而且我知道我真的在重建图像,因为我在重建它们之前删除了缓存的版本。

【问题讨论】:

  • 您当前的 dockerfile 可能会有所帮助。
  • @FarhadFarahi 还有什么有用的吗?

标签: ruby-on-rails docker rake docker-compose dockerfile


【解决方案1】:

我终于在这里找到了解决方案。在服务器启动之前,我在命令中添加了rake rails:update:bin 调用。

我创建了以下 shell 脚本来设置为 docker-compose.yml 命令

#!/bin/bash

rake rails:update:bin

# start the SSH server for connecting the debugger in development
/usr/sbin/sshd -D &
bundle exec rails s -p 3000 -b '0.0.0.0'

我的 docker-compose.yml 看起来像这样

version: '2'
services:
  web:
    build: .
    command: /MyApp/docker-dev-start.sh
    volumes:
      - .:/MyApp
    ports:
      - "3000:3000"
      - "3022:22"

我的 dockerfile 最终看起来像这样

FROM ruby:2.2
RUN apt-get update && apt-get install -y \
    build-essential \
    libpq-dev \
    nodejs \
    openssh-server

RUN mkdir /var/run/sshd
RUN echo 'root:screencast' | chpasswd
RUN sed -i 's/PermitRootLogin .*/PermitRootLogin yes/' /etc/ssh/sshd_config

# SSH login fix. Otherwise user is kicked off after login
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd

ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile

RUN mkdir /MyApp
WORKDIR /MyApp
ADD Gemfile /MyApp/Gemfile
ADD Gemfile.lock /MyApp/Gemfile.lock
RUN bundle install
ADD . /MyApp

包含 SSH 服务器是为了能够连接外部 IDE 进行调试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多