我想将Docker用作开发环境。我熟悉基本的Docker概念,如容器,图像,卷等。我也在阅读this文章。
我认为已经有专门为RoR开发创建的图像。有人可以向我推荐几张图片吗?
假设我创建了一个容器,挂载我的
工作文件夹(RoR项目)。除了代码编写之外,还有命令行工作,例如Linux任务(update
,install
),Rails特定命令(Rake,迁移......)。我可能需要安装新的二进制文件或新宝石,使用rbenv
更改Ruby版本。 如何在Docker下完成这些任务?我可以在控制台中输入命令或者ssh容器吗?
我设法创建了一个ubuntu容器并运行如下:
docker run -it -v /Users/me/Documents/Projects:/var/source_files ubuntu
它为我的容器创建一个控制台。接下来我想我可以运行gem install
,apt-get update
等命令。这是我们应该如何配置环境吗?
我找不到有关如何运行,如何维护,如何添加/删除宝石等信息。
答案 0 :(得分:1)
这取决于你和你最喜欢的东西。我假设在某种类型的库上进行单独开发,而不是完整的应用程序[1]。
例如,我倾向于使用Makefiles when developing on specific Golang projects并且有一些单独的图像,我倾向于用于不同的场合。例如,如果我必须测试Python / Node脚本,我只需键入play
,然后进入一个预先安装了几个依赖项的愚蠢容器:
但是,根据我的个人经验,我发现shell脚本/别名在项目中非常有效,所以我倾向于使用简单的别名来处理大多数项目。例如,如果我是你,我会使用简约方法并将dev
别名改为docker run -ti -v $(pwd):/src $RUBY_IMAGE
,以便您可以从任何项目运行dev rake test
,dev rails server
等。你的$RUBY_IMAGE
应该安装了一些实用程序(htop,curl等),你应该好好去。
同样,我必须强调这一事实,这实际上取决于你对什么感到满意 - 大多数时候我只使用Makefile非常高效。
[1]如果开发成熟的应用程序docker-compose适用于很多人并且拥有非常好的DX。 minikube是我建议您只有在知道如何使用kubernetes时才能选择的工具。我们使用了docker-compose很长一段时间,但由于它与我们的生产环境密切相关,因此几个月后已经切换到minikube,当你有很多服务相互交谈时,minikube效果更好(imho)。