首页 > 学院 > 开发设计 > 正文

在Docker中自动化部署Ruby on Rails的教程

2019-10-26 19:27:29
字体:
来源:转载
供稿:网友

基本的Rails应用程序

现在让我们启动一个基本的Rails应用。为了更好的展示,我使用Ruby 2.2.0和Rails 4.1.1

在终端运行:

  $ rvm use 2.2.0  $ rails new && cd docker-test

创建一个基本的控制器:

  $ rails g controller welcome index

……,然后编辑 routes.rb ,以便让该项目的根指向我们新创建的welcome#index方法:

  root 'welcome#index' 

在终端运行 rails s ,然后打开浏览器,登录http://localhost:3000,你会进入到索引界面当中。我们不准备给应用加上多么神奇的东西,这只是一个基础的实例,当我们将要创建并部署容器的时候,用它来验证一切是否运行正常。
安装webserver

我们打算使用Unicorn当做我们的webserver。在Gemfile中添加 gem 'unicorn'和 gem 'foreman'然后将它bundle起来(运行 bundle install命令)。

启动Rails应用时,需要先配置好Unicorn,所以我们将一个unicorn.rb文件放在config目录下。这里有一个Unicorn配置文件的例子,你可以直接复制粘贴Gist的内容。

接下来,在项目的根目录下添加一个Procfile,以便可以使用foreman启动应用,内容为下:

    代码如下:web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb

现在运行foreman start命令启动应用,一切都将正常运行,并且你将能够在http://localhost:5000上看到一个正在运行的应用。
构建一个Docker镜像

现在我们构建一个镜像来运行我们的应用。在这个Rails项目的根目录下,创建一个名为Dockerfile的文件,然后粘贴进以下内容: 

    代码如下: # 基于镜像 ruby 2.2.0
    FROM ruby:2.2.0
    # 安装所需的库和依赖
    RUN apt-get update && apt-get install -qy nodejs postgresql-client sqlite3 --no-install-recommends && rm -rf /var/lib/apt/lists/*
    # 设置 Rails 版本
    ENV RAILS_VERSION 4.1.1
    # 安装 Rails
    RUN gem install rails --version "$RAILS_VERSION"
    # 创建代码所运行的目录
    RUN mkdir -p /usr/src/app 
    WORKDIR /usr/src/app
    # 使 webserver 可以在容器外面访问
    EXPOSE 3000
    # 设置环境变量
    ENV PORT=3000
    # 启动 web 应用
    CMD ["foreman","start"]
    # 安装所需的 gems
    ADD Gemfile /usr/src/app/Gemfile 
    ADD Gemfile.lock /usr/src/app/Gemfile.lock 
    RUN bundle install --without development test
    # 将 rails 项目(和 Dockerfile 同一个目录)添加到项目目录

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表