【发布时间】:2015-12-06 05:53:28
【问题描述】:
所以我的目标是让 Vagrant 为我创建一个可以用作 Rails Web 应用程序开发环境的 VM。我对 Vagrant、Docker 等非常非常陌生,想检查一下这是否有意义:
我应该创建一个还是两个 Docker 映像?我的想法是,一个图像将用于 rvm、ruby 和 rails,而另一个图像将用于 Apache。
目标是可以分发给几个人,然后他们可以轻松设置完全相同的环境。
这是我当前的 Vagrantfile:
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "phusion/ubuntu-12.04-amd64"
config.vm.network "forwarded_port", :guest => 80, :host => 5000
# Share the docker configs
config.vm.synced_folder "./docker", "/docker"
config.vm.provision "docker" do |d|
d.build_image "-t me/rvm-dev /docker/rvm-dev"
d.run "me/rvm-dev"
end
config.vm.host_name = "coursera-rail.dev"
config.vm.network :forwarded_port, guest:80, host:8080
end
这是我当前的(可能是错误的)Dockerfile (顺便说一句,我正在尝试找到一些关于创建“docker”用户帐户的良好指导,因此我不会以 root 身份运行所有内容)
## Dockerfile
FROM ubuntu:latest
RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install -y curl
RUN mkdir -p /tmp/downloads
## Install RVM, Ruby, Rails
RUN cd /tmp/downloads
RUN \curl -L https://get.rvm.io | bash -s stable --ruby --rails
最后,上述方法有效,如果我使用 vagrant ssh,我可以进入我的虚拟机,但显然如果不执行 docker run -i -t me/rvm-dev 并使用 docker 获取 shell,我将无法使用 RVM .这应该是工作流程吗?
【问题讨论】:
-
我自己对工作流程并不明智,但也许 blog.abevoelker.com/rails-development-using-docker-and-vagrant 有效
-
遵循 Docker 的最佳实践,您不应运行此命令:
RUN apt-get upgrade -y它可能会破坏以前的图像。 docs.docker.com/articles/dockerfile_best-practices/… -
如果
docker exec -it <docker-container-id> /bin/bash符合您的需求,您可以试试吗?如果没有,您能否更详细地描述您想要实现的目标?结果应该是什么?
标签: vagrant docker vagrantfile