如何使用Docker设置Rails开发环境

让Rails应用程序的代码库运行起来不应该很困难。然而,开发人员花费数小时解决环境问题。Docker解决了这个问题。

为什么在开发中使用Docker?

  • 一致的环境 - 在每台机器上都一样运行
  • 轻松入职 - 新开发人员只需运行一个命令
  • 隔离的依赖 - 与其他项目没有冲突
  • 生产环境一致性 - 在类似生产的环境中开发

基本设置

创建Dockerfile

FROM ruby:3.2

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

WORKDIR /app

COPY Gemfile Gemfile.lock ./
RUN bundle install

COPY . .

CMD ["rails", "server", "-b", "0.0.0.0"]

创建docker-compose.yml

version: '3.8'

services:
  db:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: password
    volumes:
      - postgres_data:/var/lib/postgresql/data

  web:
    build: .
    command: bash -c "rm -f tmp/pids/server.pid && rails server -b 0.0.0.0"
    volumes:
      - .:/app
    ports:
      - "3000:3000"
    depends_on:
      - db
    environment:
      DATABASE_URL: postgres://postgres:password@db/app_development

volumes:
  postgres_data:

运行你的应用

docker compose build
docker compose up

访问http://localhost:3000,你就可以开始开发了。

提示

  • 使用卷挂载实现代码实时重载
  • 根据需要添加Redis、Sidekiq
  • 为常用命令创建bin/docker-dev脚本

Docker消除了”在我的机器上可以运行”的问题,让你的团队专注于构建功能。