在Docker容器中使用特定版本的Ruby on rails



我正在尝试为ruby on rails应用程序构建容器。我按照官方docker指南

提供的官方指南进行操作。问题是在创建Gemfile时,我提供了gem 'rails', '~> 6.0',但在构建docker映像时,它会覆盖rails版本并安装最新版本。

我有几个库与最新版本不兼容。在构建docker容器时,我如何阻止docker使用最新版本?

Dockerfile:

FROM ruby:3
RUN apt-get update -qq && apt-get install -y nodejs
WORKDIR /backend
COPY Gemfile /backend/Gemfile
COPY Gemfile.lock /backend/Gemfile.lock
RUN bundle install
COPY . /backend
# Add a script to be executed every time the container starts.
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 3000
# Start the main process.
CMD ["rails", "server", "-b", "0.0.0.0"]

docker-compose.yml

version: "3.9"
services:
mongodb:
image: "mongo"
volumes:
- "mongodb:/var/lib/mongodb/data"
environment:
MONGO_INITDB_ROOT_USERNAME: "root"
MONGO_INITDB_ROOT_PASSWORD: "root"
ports:
- 2717:27017
web:
build: .
volumes:
- .:/backend
ports:
- "3000:3000"
depends_on:
- mongodb
volumes:
mongodb:

~> 6.0是">= 6.0< 7;如果不想要Rails 6.1:~> 6.0.0,则需要更具体。这相当于">= 6.0.0< 6.1"

最新更新