Понимание vagrant с помощью поставщика докеров

Итак, моя цель здесь состоит в том, чтобы Vagrant развернул мне виртуальную машину, которую я мог бы использовать в качестве среды разработки веб-приложений rails. Я очень, очень новичок в 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

Наконец, приведенное выше работает, и если я использую бродячий ssh, я могу зайти на свою виртуальную машину, но, очевидно, я не могу использовать RVM, не выполнив docker run -i -t me/rvm-dev и не получив оболочку с докером. Это должен быть рабочий процесс?


person appsecguy    schedule 17.08.2014    source источник
comment
Сам не разбираюсь в рабочем процессе, но, возможно, blog.abevoelker.com /rails-development-using-docker-and-vagrant работает   -  person judoole    schedule 20.08.2014
comment
Следуя рекомендациям Docker, вы не должны запускать эту команду: RUN apt-get upgrade -y она может сломать предыдущие образы. docs.docker.com/articles/dockerfile_best-practices/   -  person Yser    schedule 26.11.2014
comment
Можете ли вы попробовать, если docker exec -it <docker-container-id> /bin/bash соответствует вашим потребностям? Если нет, можете ли вы более подробно описать, чего вы хотите достичь? Каким должен быть результат?   -  person Yser    schedule 26.11.2014


Ответы (1)


По моему скромному мнению, лучшим потоком было бы

1) разделите ваше приложение и стек БД на бродячие блоки

or

2) запустите докер на хосте (физическом компьютере) и вашем экземпляре БД (mysql и т. д.) внутри бродячего ящика.

Первый вариант лучше, потому что вы «изолируете» оба уровня стека (БД и APP) внутри Vagrant, оставляя ОС на вашем локальном компьютере (Windows, Linux, Mac OSX) нетронутой. Конечно, вы можете установить/запустить IDE на физической машине.

person R0d    schedule 05.12.2015