在现代 Web 开发中,Docker 已经成为了一种非常流行的工具。它可以帮助我们快速构建、部署和管理应用程序,同时也可以提高开发和部署的效率。在本文中,我们将介绍如何使用 Docker 构建基于 Ruby on Rails 框架的应用程序。
准备工作
在开始之前,需要确保已经安装了 Docker 和 Docker Compose。如果没有安装,可以参考 Docker 官方文档进行安装。
创建项目
首先,我们需要创建一个 Ruby on Rails 项目。在终端中执行以下命令:
$ docker-compose run web rails new . --force --no-deps --database=postgresql
这个命令会在当前目录下创建一个新的 Ruby on Rails 项目,并且使用 PostgreSQL 作为数据库。
修改配置
接下来,我们需要修改一些配置文件。打开 config/database.yml
文件,将其中的 host
、username
和 password
修改为以下内容:
default: &default adapter: postgresql encoding: unicode host: db username: postgres password: pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> development: <<: *default database: myapp_development test: <<: *default database: myapp_test production: <<: *default database: myapp_production username: myapp password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %>
这里的 host
设置为 db
,是因为我们将使用 Docker Compose 来启动一个 PostgreSQL 容器,并将其命名为 db
。在 Docker Compose 中,可以使用服务名来访问其他容器。
编写 Dockerfile
接下来,我们需要编写一个 Dockerfile,用于构建我们的应用程序镜像。在项目根目录下创建一个名为 Dockerfile
的文件,内容如下:
FROM ruby:2.6.3 RUN apt-get update -qq && apt-get install -y nodejs postgresql-client WORKDIR /app COPY Gemfile Gemfile.lock ./ RUN gem install bundler && bundle install --jobs 20 --retry 5 COPY . . EXPOSE 3000 CMD ["rails", "server", "-b", "0.0.0.0"]
这个 Dockerfile 中定义了一个基于 Ruby 2.6.3 的镜像,安装了 Node.js 和 PostgreSQL 客户端。然后将工作目录设置为 /app
,并将 Gemfile 和 Gemfile.lock 复制到容器中。接着运行 bundle install
安装所需的依赖。最后,将整个项目复制到容器中,并将端口号设置为 3000,启动 Rails 服务器。
编写 docker-compose.yml
现在我们需要编写一个 Docker Compose 文件,用于启动我们的应用程序和数据库容器。在项目根目录下创建一个名为 docker-compose.yml
的文件,内容如下:
version: '3' services: db: image: postgres restart: always environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: password volumes: - db-data:/var/lib/postgresql/data web: build: . command: bundle exec rails s -p 3000 -b '0.0.0.0' volumes: - .:/app ports: - "3000:3000" depends_on: - db volumes: db-data:
这个文件中定义了两个服务:db
和 web
。db
服务使用官方提供的 PostgreSQL 镜像,并设置了用户名和密码。同时将数据卷挂载到 /var/lib/postgresql/data
目录下,用于持久化存储数据库数据。
web
服务则使用了我们刚刚编写的 Dockerfile,将应用程序构建为一个镜像。然后将整个项目挂载到容器中,以便进行开发和调试。同时将端口号映射到主机上的 3000 端口,便于在浏览器中访问。最后,将 web
服务依赖于 db
服务,以确保数据库容器在应用程序容器之前启动。
启动应用程序
现在可以使用 Docker Compose 启动我们的应用程序了。在终端中执行以下命令:
$ docker-compose up
这个命令会启动所有定义在 docker-compose.yml
文件中的服务。在启动完成之后,可以在浏览器中访问 http://localhost:3000
,看到 Ruby on Rails 的欢迎页面。
总结
本文介绍了如何使用 Docker 构建基于 Ruby on Rails 框架的应用程序。通过使用 Docker,我们可以快速构建和部署应用程序,并且可以方便地进行开发和调试。希望本文对大家有所帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65c5d4bbadd4f0e0ff05ceda