Docker没有开始退出Ruby



我正在尝试构建Docker容器并启动服务器。当我们成功使用docker build -t . test它的创建容器时。当我们启动容器时,它的启动退出状态为 0docker run -d -p 3000:3000 --name railsserver test但看不到任何进程或任何打开的端口 3000

docker ps -a

CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                      PORTS                NAMES
da70e26109b3        foodex              "irb"                    40 seconds ago       Exited (0) 22 seconds ago                        admiring_heyrovsky
73d4a7ca58d0        foodex              "irb"                    About a minute ago   Created                                          jolly_ramanujan
4594ad5ea4ce        foodex              "irb"                    6 minutes ago        Exited (0) 6 minutes ago                         tender_murdock 

Dockerfile

FROM ruby
RUN apt-get update -qq && apt-get install -y 
build-essential libpq-dev nodejs mysql-client libmysqlclient-dev ssh
RUN mkdir -p /foodex/
WORKDIR /foodex/
ADD Gemfile Gemfile.lock /
RUN bundle install
#RUN source ~/.bashrc
EXPOSE 3000
RUN bundle exec rails s -p 3000 -b '0.0.0.0'
ADD . /foodex/

将 Dockerfile 更新为:

FROM ruby
RUN apt-get update -qq && apt-get install -y 
build-essential libpq-dev nodejs mysql-client libmysqlclient-dev ssh
COPY ./ /foodex/
WORKDIR /foodex/
RUN bundle install
EXPOSE 3000
CMD ["bundle", "exec", "rails", "s", "-p", "3000", "-b", "'0.0.0.0'"]

并继续使用与上述相同的buildrun命令:

docker build -t test .
docker run -d -p 3000:3000 --name railsserver test

您遇到的问题是运行服务器bundle exec rails s命令在构建期间由RUN执行。它应该推迟到容器执行,并带有CMD

最新更新