在 Ubuntu 上使用 Docker 和 Docker Compose 设置 Ruby on Rails 开发环境在 Ubuntu 上使用 Docker 和 Docker Compose 设置 Ruby on Rails 开发环境在 Ubuntu 上使用 Docker 和 Docker Compose 设置 Ruby on Rails 开发环境在 Ubuntu 上使用 Docker 和 Docker Compose 设置 Ruby on Rails 开发环境
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

在 Ubuntu 上使用 Docker 和 Docker Compose 设置 Ruby on Rails 开发环境

在此页

  1. 第 1 步 - 安装 Docker 和 Docker Compose
  2. 第 2 步 - 生成 Ruby on Rails 项目
  3. 第 3 步 - 设置 Rails 项目
  4. 第 4 步 - 创建 Docker 组合文件
  5. 第 5 步 - 构建项目
  6. 第 6 步 - 测试在 Rails 上创建基本 CRUD
  7. 参考资料

Docker 是一个开源项目,它为开发人员和系统管理员提供了一个开放平台,可以作为轻量级容器在任何地方构建、打包和运行应用程序。 Docker 自动在软件容器内部署应用程序。

Ruby on Rails (RoR) 是一个开源 Web 应用程序框架,在 MIT 许可证下发布。它是一个遵循 MVC(模型-视图-控制器)概念的服务器端 Web 应用程序框架。

在本教程中,我将向您展示如何使用 Docker 和 Docker Compose 为 Ruby on Rails 应用程序设置开发环境。我们将使用 Ubuntu 18.04 作为主机操作系统,并为我们的 Rails 项目使用 PostgreSQL 数据库。

我们将要做什么:

  1. 安装 Docker 和 Docker Compose
  2. 生成 Rails 项目
  3. 设置 Rails 项目
  4. 创建 Docker Compose 脚本
  5. 构建项目
  6. 测试在 Rails 上创建基本的 CRUD

第 1 步 - 安装 Docker 和 Docker Compose

我们必须做的第一步是安装 docker 和 docker compose 本身。我们将从官方 docker 存储库安装 docker,并从官方 docker GitHub 项目安装 docker-compose。

在安装 Docker 包之前,运行下面的 apt 命令来安装包依赖项。

sudo apt install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

现在添加 docker 密钥和 docker 存储库。

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

该命令将自动更新系统上的所有存储库。完成后,安装 docker-ce 包。

sudo apt install -y docker-ce

等待docker-ce安装完成,然后启动docker服务,加入开机时间。

sudo systemctl start docker
sudo systemctl enable docker

Docker 在系统上启动并运行。

接下来,通过直接从 docker GitHub 存储库下载二进制文件来安装 docker-compose。

将 docker-compose 二进制文件下载到 /usr/local/bin/ 目录并使其成为可执行文件。

sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

docker 和 docker-compose 已经安装到系统中,使用下面的命令检查版本。

docker version
docker-compose version

下面是结果。

第 2 步 - 生成 Ruby on Rails 项目

将核心包 docker 和 docker-compose 安装到系统后,我们要创建一个新用户,然后使用 docker 镜像生成 Rails 项目。

添加名为 hakase 的用户并为该用户提供密码。

useradd -m -s /bin/bash hakase
passwd hakase

将用户添加到 sudo 和 docker 组并登录到 hakase 用户 shell。

usermod -a -G sudo hakase
usermod -a -G docker hakase
su - hakase

现在 hakase 用户可以执行和运行 docker 命令。

接下来,我们将为我们的 Ruby on Rails 项目创建一个新的目录 rails。

创建 rails 目录并转到它。

mkdir -p ~/rails
cd ~/rails/

现在执行下面的 docker run 命令。

docker run --rm -v ${PWD}:/usr/src -w /usr/src -ti ruby:alpine sh ; cd app

该命令会运行基于ruby:alpine镜像的临时容器,将本地目录挂载到容器内部的/usr/src目录下,然后执行sh shell命令,进入app目录。

在容器内,安装构建基础包。

apk add build-base

现在在临时容器中安装 Ruby on Rails。

gem install -N rails

并以 PostgreSQL 作为数据库生成名为 app 的新 Rails 项目,然后退出/注销容器。

rails new app --database=postgresql --skip-bundle
exit

并且你将在 Rails 项目目录 app 上。

现在将app项目目录的所有者修改为hakase用户。

sudo chown -R hakase:hakase ~/rails/app/
ls -lah

并且Ruby on Rails项目已经通过临时docker容器生成。

第 3 步 - 设置 Rails 项目

在此步骤中,我们将为 Rails 应用程序创建一个新的 Dockerfile。

在 rails 目录中,使用 vim 创建一个新的 Dockerfile。

vim Dockerfile

下面粘贴配置。

FROM ruby:alpine

RUN apk update
RUN apk add build-base nodejs postgresql-dev tzdata
RUN gem install -N rails

RUN mkdir -p /app
WORKDIR /app

COPY ./app/Gemfile /app
COPY ./app/Gemfile.lock /app
RUN bundle install --binstubs

保存并退出。

我们正在创建一个基于 Ruby Alpine linux 的新 docker 镜像。我们正在为 rails 安装安装新的包,创建一个新的 /app 目录,从应用程序本地目录复制 Gemfile 和 Gemfile.lock,然后根据 Gemfile 安装所有包。

接下来,转到应用程序目录,创建一个新文件 Gemfile.lock。

cd app/
touch Gemfile.lock

编辑 database.yml 文件。

vim config/database.yml

更改默认数据库配置并更改详细信息,如下所示。

default: &default
   adapter: postgresql
   encoding: unicode
   host: db
   username: postgres
   pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
   timeout: 5000

保存并退出。

Rails 项目配置已经完成。

第 4 步 - 创建 Docker Compose 文件

在此步骤中,我们将为 Rails 应用程序创建一个新的 docker-compose 文件。我们只会创建两个服务 db 数据库 PostgreSQL 和 web 是 rails 应用程序本身。

在 rails 目录中创建一个新文件 docker-compose.yml。

vim docker-compose.yml

并在下面粘贴配置。

version: '3.6'

services:

  db:
    image: postgres:alpine
    volumes:
      - ./postgresql:/var/lib/postgresql/data

  web:
    build: .
    volumes:
      - ./app:/app
    working_dir: /app
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    ports:
      - 80:3000
    depends_on:
      - db

保存并退出。

现在在 rails 项目中创建 postgresql 目录。

mkdir -p ~/rails/postgresql

并准备好构建我们的 Rails 项目。

第 5 步 - 构建项目

使用下面的 docker-compose 命令构建 Rails docker 镜像。

docker-compose build

该命令将下载 Ruby Alpine Linux 镜像,并根据我们的 Dockerfile 构建我们需要的自定义镜像。

为项目生成 PostgreSQL 数据库。

docker-compose run web rake db:create

现在启动数据库和网络服务。

docker-compose up -d

rails 服务已启动并正在运行,使用下面的 docker-compose 命令检查它。

docker-compose ps

您可以看到服务 Web 正在主机上的端口 80 上运行。

现在检查我们系统上的 docker 镜像。

docker-compose images

你会得到如下结果。

现在打开您的网络浏览器并输入服务器 IP 地址或域名。我的是:

http://rails.hakase-labs.io/

您将获得默认的 Rails 页面应用程序。

现在准备开发我们的 Rails 项目。

第 6 步 - 测试在 Rails 上创建基本 CRUD

通过在 Web 容器服务中运行 rails 命令,在 Rails 上生成简单的 CRUD。

docker-compose exec web rails g scaffold Post title:string body:text

现在生成数据库。

docker-compose exec web rake db:migrate

现在打开您的网络浏览器并在地址栏中输入服务器 IP 地址和路径 /posts。我的是:

http://rails.hakase-labs.io/posts

您将获得如下所示的简单 CRUD 页面。

键入帖子并单击创建帖子按钮。

你会得到如下结果。

使用 Docker 和 Docker Compose 的 Ruby on Rails 开发环境设置已成功完成。

参考

  • https://docs.docker.com/

©2015-2025 艾丽卡 support@alaica.com