在铁路上部署Ruby应用到生产上可能由于依赖性,环境配置,服务器设置而变得复杂. 与Docker的容器化通过创建孤立,可复制的环境来简化这一过程. 本条探索如何将使用Docker的铁路应用容器化,以进行无缝生产部署.

为什么把Ruby装进铁路应用箱?

铁路的集装箱化应用带来许多好处:

  • 一致性:确保应用在开发、中转和生产中运行的方式相同。
  • 可扩展性:] 处理增加的流量的易缩放容器.
  • 孤立:[]避免与服务器上的其他应用程序和依赖关系发生冲突.
  • 移植性:[] 将应用程序在环境之间移动而无需修改.

为铁路应用程序设置停靠器

要将 Rails app 装入容器, 请先创建定义环境的 Docker 文件。 此文件指定了运行该app 的基部图像、 依赖和命令 。

标本嵌入文件

以下是铁路应用的Dockerfile实例:

FROM ruby:3.1.0

# Install dependencies
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client

# Set working directory
WORKDIR /app

# Add Gemfile and install gems
COPY Gemfile* /app/
RUN bundle install

# Copy the rest of the application code
COPY . /app

# Precompile assets
RUN RAILS_ENV=production bundle exec rails assets:precompile

# Expose port 3000
EXPOSE 3000

# Start the server
CMD ["bundle", "exec", "puma", "-C", "config/puma.rb"]

配置多容器设置的多容器编译器

对于生产,通常使用Docker Compose来管理多个容器,如 Rails app和数据库. 以下是 docker-compose.yml 文件的例子:

version: '3.8'

services:
 db:
 image: postgres:13
 environment:
 POSTGRES_USER: railsuser
 POSTGRES_PASSWORD: password
 POSTGRES_DB: railsapp_production
 volumes:
 - db_data:/var/lib/postgresql/data

 web:
 build: .
 ports:
 - "3000:3000"
 environment:
 DATABASE_URL: postgres://railsuser:password@db:5432/railsapp_production
 depends_on:
 - db

volumes:
 db_data:

部署生产

配置后, 构建和运行您的容器 :

docker-compose build
docker-compose up -d

确保您的服务器环境支持 Docker 和 Docker 编译。 然后您可以通过服务器的 IP 地址访问您的 Rails 应用程序 。

结论

将Ruby on Rails应用的集装箱化,同时使用Docker来简化部署,增强一致性,并简化缩放。通过创建Dockerfile和使用Docker Compose,开发人员可以自信地有效地将他们的Rails应用移动到生产环境中.