让Rails在Docker中运行

首先

你好,我是一个文科大学生。我写这篇文章是为了输出我日常学习编程的成果。

这次我想要将我在本地创建的Rails应用程序进行Docker化并部署,所以我写了这篇文章。

在这篇文章中,我使用了PostgreSQL作为数据库。

目标读者

    • dockerを学びたての方

 

    自作したRailsアプリをDocker化したい人

环境

    • M2 Macbook Air

 

    Railsアプリを作成済み

不做的事情

    今回は、Dockerの細かな解説はしませんの予めご了承ください。

使用Docker进行环境配置

首先,在目录的根目录下创建一个Dockerfile和docker-compose.yml文件。

touch Dockerfile docker-compose.yml

接下来,我们将编写Dockerfile。

FROM ruby:3.2.2

RUN apt-get update && apt-get install -y build-essential \
    libpq-dev \
    nodejs \
    postgresql-client
RUN mkdir myapp
WORKDIR /myapp
COPY Gemfile Gemfile.lock /myapp/
RUN bundle install
需要与现有的Gemfile中所列的版本相配合,此处为ruby:3.2.2。

接下来,我们会写docker-compose.yml文件。

version: '3.0'

volumes:
  db-data:

services:
  web:
    build: .
    ports:
      - '3000:3000'
    environment:
      - 'DATABASE_PASSWORD=postgres'
    volumes:
      - .:/myapp
    tty: true
    stdin_open: true
    depends_on:
      - db
    links:
      - db
  db:
    image: postgres:12
    volumes:
      - 'db-data:/var/lib/postgresql/data'
    environment:
      - 'POSTGRES_PASSWORD=postgres'
      - 'POSTGRES_USER=postgres'

由于在docker-compose.yml中进行了postgresql的配置,因此需要编辑rails的config/database.yml文件。

(中略)

default: &default
  adapter: postgresql
  encoding: unicode
  host: db //追加
  user: postgres //追加
  port: 5432 //追加
  password: <%= ENV.fetch("DATABASE_PASSWORD") %> //追加
  # For details on connection pooling, see Rails configuration guide
  # https://guides.rubyonrails.org/configuring.html#database-pooling
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

(中略)

准备工作已经完成。请执行以下命令。

$ docker compose build //buildする
$ docker-compose run web rake db:create db:migrate
$ docker-compose up

如果 localhost:3000 服务器已启动,则完成。

结束时

这篇文章是关于将现有的Rails应用程序容器化的方法。我觉得它意外地简单。
Docker真的很方便呢。

参考来源的网站或文章

 

bannerAds