如何 Dockerize Rails 应用程序:Dockerize Compose 和 Rails 教程
介绍
好奇的开发人员和技术爱好者永远不会错过每天多学习一点的机会!我完全可以理解这种学习的冲动。所以,我们回来了另一个 Rails 教程,关于如何在 rails docker compose 的帮助下对rails app 进行 dockerize 。请熟悉什么是 Docker 以及我们为什么需要 Docker。
让我们开始应用程序开发并将其 docker 化。
创建 Rails 应用程序
触发以下命令来创建一个 Rails 应用程序。
先决条件:Dockerize Rails 应用程序
在我们实施 Docker Compose 时,请在开始之前确保以下安装。
安装Docker 社区版
安装Docker 组合
创建一个 Dockerfile
Dockerfile 是任何 Dockerize Ruby on Rails 应用程序的基础。它包含构建应用程序映像的所有说明。您可以通过安装 Ruby 及其所有依赖项来进行设置。Dockerfile 包含以下指令。
// 文件
来自红宝石:2.3.0运行 apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs运行 mkdir /noteapp工作目录 /noteapp添加 Gemfile /noteapp/Gemfile添加 Gemfile.lock /noteapp/Gemfile.lock运行捆绑安装添加 。/笔记应用
Dockerfile 会将应用程序代码保存在一个图像中,构建一个包含 Bundler、Ruby 和其他依赖项的容器。因此,在应用程序的根目录中,使用以下命令创建一个新的 Dockerfile触摸 Dockerfile并将上述 dockerfile 的内容放入其中。
解释
1. FROM ruby:2.3.0:告诉 Docker 使用预构建的 Ruby 镜像。有多种选择,但本项目使用 ruby:2.3.0 镜像。
2. RUN:运行命令。在这里, RUN 用于使用Apt安装不同的软件。
3. WORKDIR:用于说明执行所有命令的基本目录。
4. ADD:用于将文件从主机复制到我们的容器。
创建一个宝石文件
接下来,打开编辑器并创建一个加载 Rails 的引导程序 Gemfile。
// 宝石文件
创建一个空的Gemfile.lock文件来构建我们的Dockerfile。
Dockerize Rails 应用程序:为您的应用程序添加可移植性、模块化和可扩展性
联系 Bacancy 并聘请 Rails 开发人员对您的 Rails 应用程序进行 Dockerize。
使用 Docker Compose 定义服务
最后,进入最重要的部分。docker-compose.yml文件将包含您的应用程序(Web 应用程序和数据库)所需的服务,用于获取彼此的 Docker 映像,以及用于连接它们并使其在端口上可见的配置。
// docker-compose.yml
版本:'2'服务:
D b:
图片:mysql:5.7
重启:总是
环境:
MYSQL_ROOT_PASSWORD:密码
MYSQL_DATABASE:记事本
MYSQL_USER:应用用户
MYSQL_PASSWORD:密码
端口:
- “3307:3306”
应用程序:
建造: 。
命令:bundle exec rails s -p 3000 -b '0.0.0.0'
卷:
- “.:/noteapp”
端口:
- “3001:3000”
依赖于取决于
- D b
链接:
- D b
构建项目
现在在 docker-compose run 的帮助下构建 Rails 应用程序的框架。
compose——为应用服务构建镜像,我们必须在 docker-compose.yml 中定义它
runs rails new——使用该图像在新容器中运行应用程序
database=mysql – 定义数据库
成功执行命令后,应创建您的应用程序。列出使用的文件ls -l
数据库连接
在本节中,我们将连接数据库,因为 rails 希望数据库在本地主机上运行。
我们还将更改数据库和用户名,以使其与 MySQL 映像的默认值保持一致。当我们运行docker-compose命令首先,它会创建一个数据库容器,用于下载 MySQL 数据库镜像,并根据docker-compose.yml文件中设置的环境变量创建一个数据库。
到目前为止,我们已经创建了一个数据库容器和应用程序结构。我们需要编辑config/database.yml文件并从环境变量中设置配置。
将config/database.yml的内容替换为以下内容:
// docker-compose.yml
版本:'2'服务:
D b:
图片:mysql:5.7
重启:总是
环境:
MYSQL_ROOT_PASSWORD:密码
MYSQL_DATABASE:记事本
MYSQL_USER:应用用户
MYSQL_PASSWORD:密码
端口:
- “3307:3306”
应用程序:
建造: 。
命令:bundle exec rails s -p 3000 -b '0.0.0.0'
卷:
- “.:/noteapp”
端口:
- “3001:3000”
依赖于取决于:
- D b
链接:
- D b
环境 :
DB_USER:根
DB_NAME:记事本
DB_PASSWORD:密码
DB_HOST:分贝
设置docker-compose.yml后,运行docker-compose 构建命令为应用程序构建图像并安装所有必需的 gem。
运行以下命令创建数据库。
在创建任何迁移/模型之前,让我们做一个 docker-compose up 来启动应用程序和数据库服务,并在database.yml中进行更改后启动应用程序。
命令执行成功后,我们可以看到rails运行在容器中的3000端口上。但是,那不是主机上的端口,所以我们无法在浏览器上访问它。根据 docker-compose,我们已经将本地主机上的端口从 3000 暴露到 3001;因此,它应该在 localhost:3001 上可用。
完成在浏览器上运行的应用程序后,创建模型并在项目目录的不同控制台中使用这些命令执行迁移。
现在,我们可以访问端口 3001-localhost:3001/notes 上的应用程序并对应用程序执行操作。
总结:如何将 Rails 应用程序 Dockerize
mkdir ~/项目/noteapp
cd ~/项目/noteapp
创建Gemfile并清空Gemfile.lock(内容如上)
创建Dockerfile(内容如上)
创建docker-compose.yml(内容如上)
docker-compose run app rails new 。–force –database=mysql
在 config/database.yml 中进行更改
docker-compose 构建
码头工人组成
http://localhost:3001
docker-compose run –rm app rails g 脚手架注释标题正文:文本
docker-compose run –rm app rake db:迁移
http://localhost:3001/笔记
还可以观看有关如何对Rails 应用程序进行 docker 化的视频教程。
源代码:dockerize-rails-app
您还可以克隆代码并浏览项目。这是存储库的源代码:dockerize-rails-app
命令:停止、重新启动和重建应用程序
停止应用程序
重新启动应用程序
重建应用程序
当您尝试不同的配置并更改 Gemfile 或 Compose 文件时,必须重建应用程序。
➡ 有时只docker-compose up –build足够。
➡ 但是,如果你想完全重建整个应用程序,那么使用docker-compose run app bundle 安装, 其次是docker-compose up –build用于同步 Gemfile.lock 和主机之间的更改。
结论
教程就是这样:如何使用 Docker Compose 对 Rails 应用程序进行 Docker 化。我希望本教程对您构建自己的演示应用程序和探索更多内容有所帮助。
访问Ruby on Rails 教程页面以获取类似的教程,您可以在其中探索您的兴趣并尝试代码。正在寻找可以帮助您满足项目要求的熟练 Rails 开发人员?联系我们并聘请 Rails 开发人员。