使用Docker和Docker Compose将Web应用程序容器化的方法

我整理了将Rails应用程序进行Docker化的方法。

环境

    • docker: 20.10.12

 

    • Ruby: 3.2.2

 

    • Rails: 7.0.6

 

    DB: PostgreSQL 12

将Docker化的步骤进行中文本地化

    1. 创建Dockerfile

 

    1. 创建Dockerfile并写入以下内容。

Dockerfile
FROM ruby:3.2.2
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
WORKDIR /myapp
ADD Gemfile Gemfile.lock /myapp/
RUN bundle install

创建docker-compose.yml
创建docker-compose.yml并写入以下内容。

docker-compose.yml
version: ‘3’

volumes:
db-data:

services:
web:
build: .
command: bundle exec rails s -p 3000 -b ‘0.0.0.0’
environment:
– ‘DATABASE_PASSWORD=${POSTGRES_PASSWORD}’
volumes:
– .:/myapp
ports:
– “3000:3000”
depends_on:
– db
db:
image: postgres:12
environment:
– ‘POSTGRES_PASSWORD=${POSTGRES_PASSWORD}’
volumes:
– ‘db-data:/var/lib/postgresql/data’

配置数据库
将config/database.yml以以下方式重新编写。

config/database.yml
default: &default
adapter: postgresql
encoding: unicode
host: db
user: postgres
port: 5432
password: <%= ENV.fetch(“DATABASE_PASSWORD”) %>
pool: <%= ENV.fetch(“RAILS_MAX_THREADS”) { 5 } %>

development:
<<: *default
database: myapp_development

test:
<<: *default
database: myapp_test

配置数据库密码
创建.env文件并写入以下内容。

.env
POSTGRES_PASSWORD=您的密码

确认操作

    1. 创建图像

 

    1. 执行以下命令来创建图像。

 

    1. $ docker-compose build

创建数据库
执行以下命令来创建数据库。
$ docker-compose run web rake db:create
$ docker-compose run web rails db:migrate

创建和启动容器
执行以下命令来创建和启动容器。
$ docker-compose up

进行操作确认
访问 http://localhost:3000/