本文将介绍如何使用 Docker 部署 Rails 应用程序,以便于开发、测试和部署时的配置一致性和可重复性。我们将介绍 Docker 的一些基本概念和命令,并使用一个简单的 Rails 应用程序作为例子演示如何创建 Docker 镜像、运行 Docker 容器以及部署到服务器上。
Docker 简介
Docker 是一种基于容器的虚拟化技术,可以让开发者打包应用程序和依赖库到一个可移植的容器中,并在多个环境中运行。Docker 的好处在于:
- 轻量级:容器比虚拟机更轻便,因为它们共享操作系统内核。
- 隔离性:每个容器都有自己的文件系统、网络和进程空间,互相之间隔离,提高了安全性和稳定性。
- 可重复性:Docker 镜像和容器都是可声明性的,可以重复构建和部署。
安装 Docker
在开始使用 Docker 之前,需要安装 Docker。Docker 提供了多种安装方式,可以根据不同的操作系统进行选择。这里以 Ubuntu 为例,介绍如何安装 Docker。
首先,更新系统包列表:
sudo apt update
然后,安装 Docker 的依赖:
sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
接着,添加 Docker 的官方 GPG key:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
然后,添加 Docker 的 apt 仓库:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
最后,安装 Docker:
sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io
安装完成后,运行下面的命令检查 Docker 是否安装成功:
sudo docker run hello-world
如果一切正常,将会输出如下信息:
Hello from Docker! This message shows that your installation appears to be working correctly. ...
创建 Rails 应用程序
在使用 Docker 部署 Rails 应用程序之前,需要先创建一个 Rails 应用程序。如果你已经有一个 Rails 应用程序,可以跳过这一步。
首先,安装 Ruby 和 Rails:
sudo apt-get update sudo apt-get install ruby-full build-essential zlib1g-dev gem install rails
然后,创建一个新的 Rails 应用程序:
rails new myapp cd myapp/
现在,可以运行应用程序并查看是否能访问:
rails server
打开浏览器,访问 http://localhost:3000/ ,应该显示 Rails 的欢迎页面。
创建 Docker 镜像
在创建 Docker 镜像之前,需要先创建一个 Dockerfile ,该文件描述了如何构建 Docker 镜像。在这个例子中,我们使用的是官方的 ruby:2.7.2 镜像作为基础镜像,并添加了一些额外的命令以安装 Rails 应用程序的依赖:
-- -------------------- ---- ------- ---- ---------- --- ------- ------ --- -- ------- ------- -- ------ ----------------- ------- ------ ---- ------- ------------ ------- --- ------ ------- ---- - ------
接下来,使用 docker build 命令来创建 Docker 镜像:
docker build -t myapp .
-t 选项可以指定镜像的名称和标签。这里将镜像命名为 myapp,并使用默认标签 latest 。
运行 Docker 容器
在创建 Docker 容器之前,需要先创建一个数据库。在这里,我们将使用 PostgreSQL 作为数据库,通过 Docker 运行 PostgreSQL 容器,并将应用程序和数据库连接。
首先,使用以下命令在 Docker 中运行 PostgreSQL 容器:
docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
然后,使用 docker ps 命令查看容器是否已经运行:
docker ps
输出应该类似于以下内容:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d605147b10bf postgres "docker-entrypoint.s…" 51 seconds ago Up 50 seconds 5432/tcp some-postgres
现在,运行下面的命令来启动应用程序容器:
docker run --name myapp --link some-postgres:postgres -p 3000:3000 -d myapp
这个命令指定了容器的名称、链接到的 PostgreSQL 容器、监听的端口和应用程序镜像名称。
使用 docker ps 命令检查容器是否已经运行:
docker ps
输出应该类似于以下内容:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0d140553a7dc myapp "bin/rails server -b…" 16 seconds ago Up 13 seconds 0.0.0.0:3000->3000/tcp myapp d605147b10bf postgres "docker-entrypoint.s…" 7 minutes ago Up 7 minutes 5432/tcp some-postgres
现在,打开浏览器,访问 http://localhost:3000/ ,应该看到 Rails 的欢迎页面。
部署到服务器
在部署 Rails 应用程序到服务器之前,需要先准备好服务器环境,并确保服务器上安装了 Docker。然后,按照以下步骤进行部署:
- 将应用程序代码和 Dockerfile 文件上传到服务器上。
- 在服务器上使用 docker build 命令构建 Docker 镜像。
- 在服务器上运行 PostgreSQL 容器。
- 在服务器上运行应用程序容器。
部署完成后,可以使用浏览器访问服务器的 IP 地址和端口号来访问应用程序。
总结
本文介绍了如何使用 Docker 部署 Rails 应用程序,并解释了 Docker 的基本概念和命令。通过使用 Docker,可以提高应用程序的配置一致性和可重复性,并提高开发、测试和部署时的效率和可靠性。在实际使用中,可以根据项目的需要来选择不同的 Docker 架构和工具链,以满足不同的需求和场景。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64ed630cf6b2d6eab378c625