使用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和数据库都整合在一个容器中。
只要有一种方法可以保持上述的最佳实践而不导致管理混乱,我想要采纳(请有人告诉我)。