使用Docker搭建Ruby on Rails开发环境

简述

我在Ubuntu 16.04的基础上创建了以下配置的镜像。

    • rails 4.2.6

 

    • ruby 2.2.5

 

    PostgreSQL 9.5

只要安装了Docker,我认为你就可以立即开始Ruby on Rails开发了。

环境

    • OS X 10.10.5

 

    Docker 1.12.0

请用中文重新表达以下内容,只需一种方案:
源泉

图像的安装

请用任意一种方法安装容器镜像。

从Docker Hub拉取

$ docker pull mktktmr/docker-rails-postgresql

b. 从源代码编译

$ git clone https://github.com/mktktmr/docker-rails-postgresql.git
$ cd docker-rails-postgresql
$ docker build -t mktktmr/docker-rails-postgresql .

确认

使用docker images确认镜像的存在。

$ docker images
REPOSITORY                        TAG                 IMAGE ID            CREATED             SIZE
mktktmr/docker-rails-postgresql   latest              ba322d4f4504        59 minutes ago      925.5 MB
ubuntu                            latest              bd3d4369aebc        11 days ago         126.6 MB

启动容器

使用 docker run 命令来启动容器。

$ docker run -it --name rails -p 3000:3000 mktktmr/docker-rails-postgresql

只要容器成功启动,就会切换到容器的控制台。

root@58f24edfbd76:~#

您可以通过按下Ctrl + d或其他方式退出容器。

root@58f24edfbd76:~# exit

关于选项

请将以下内容以中文本地化解释,仅需要一种选项:

– It.

您将能够在终端上以交互方式操作容器。

– 叫法

您可以为容器赋予任意名字。

(只需要一种选项)

-他们不喜欢这个新规定。

设置主机操作系统和容器的端口映射。

持续存在

由于容器基本上是无状态的,因此重新启动容器后会导致在容器上创建的文件等内容消失。

如果想保留数据库数据等内容,就需要进行持久化操作。

听说有很多种方法,但我会介绍最简单(我认为)的方法。

本次将以PostgreSQL(数据库)的持久化作为例子。

创建音量

使用Docker volume create命令创建一个用于挂载的
docker卷。

$ docker volume create --name postgresql

您可以使用 docker volume ls 命令来检查创建的卷。

$ docker volume ls
DRIVER              VOLUME NAME
local               postgresql

挂载卷并启动容器

使用Docker run命令的-v选项,将创建的卷以及PostgreSQL的目录进行挂载。

$ docker run -v postgresql:/var/lib/postgresql -it --name rails -p 3000:3000 mktktmr/docker-rails-postgresql

现在,即使重新启动容器,数据库也不会丢失。

请参考

「Docker实践入门-从Linux容器技术基础到应用」

个人感受

虚拟化和不破坏本地环境的同时搭建环境是一件好事,不是吗?

没有过去建立的环境之间的竞争问题,所以可以轻松地破坏或重新建立环境。

最近,Docker在Windows和Mac上也可以在不使用虚拟环境的情况下运行。

我认为现在更容易利用像这次这样的小型开发环境的构建。

题目

在Docker中,使用一个容器一个进程的结构似乎是最佳实践。

由于本次的主题是简化开发环境的构建,为了避免管理变得复杂,我们将Rails和数据库都整合在一个容器中。

只要有一种方法可以保持上述的最佳实践而不导致管理混乱,我想要采纳(请有人告诉我)。