所以我的目标是让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我可以进入我的VM,但显然我不能使用RVM而不用docker运行-i -t me / rvm-dev并获得带有docker的shell 。这应该是工作流吗?
答案 0 :(得分:-1)
以我的拙见,最好的流程是
1)将您的应用和数据库堆栈分成流浪盒
或
2)在宿主(物理机器)上运行docker,并在流浪盒内运行数据库实例(mysql等)。
选项一是最好的,因为你是"沙盒" Vagrant中的堆栈(DB和APP)的两个层因此将操作系统留在本地计算机(Windows,Linux,Mac OSX)上。当然,您可以在物理计算机上安装/运行IDE。