Czy to dobre podejście?
Tak, przynajmniej działa to dla mnie od kilku miesięcy.
Różnica polega na tym, że mam również plik docker-compose.yml
.
W moim Vagrantfile
jest Sekcja 1 provisioning, który instaluje doker, pip i doker-komponować:
config.vm.provision "shell", inline: <<-SCRIPT
if ! type docker >/dev/null; then
echo -e "\n\n========= installing docker..."
curl -sL https://get.docker.io/ | sh
echo -e "\n\n========= installing docker bash completion..."
curl -sL https://raw.githubusercontent.com/dotcloud/docker/master/contrib/completion/bash/docker > /etc/bash_completion.d/docker
adduser vagrant docker
fi
if ! type pip >/dev/null; then
echo -e "\n\n========= installing pip..."
curl -sk https://bootstrap.pypa.io/get-pip.py | python
fi
if ! type docker-compose >/dev/null; then
echo -e "\n\n========= installing docker-compose..."
pip install -U docker-compose
echo -e "\n\n========= installing docker-compose command completion..."
curl -sL https://raw.githubusercontent.com/docker/compose/$(docker-compose --version | awk 'NR==1{print $NF}')/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
fi
SCRIPT
i wreszcie sekcja rezerw, które wystrzeliwuje Döcker-Compose:
config.vm.provision "shell", inline: <<-SCRIPT
cd /vagrant
docker-compose up -d
SCRIPT
Istnieje other ways do budowania i uruchamiania kontenerów dokerów od vagrant, ale użycie funkcji dokowania pozwala mi na uzewnętrznienie dowolnego okna dokowanego specyfiki z mojej Vagrantfile. W rezultacie ta Vagrantfile może być ponownie wykorzystana do innych projektów bez zmian; wystarczy podać inny plik docker-compose.yml
.
Inną rzeczą, którą robię inaczej jest umieszczenie Vagrantfile
w katalogu głównym projektu (a nie w katalogu vagrant
), ponieważ jest to miejsce, w którym ludzie i narzędzia (niektórzy IDE) oczekują, że go znajdą. PyCharm ma, prawdopodobnie PhpStorm.
Umieściłem również mój plik docker-compose.yml
w katalogu głównym moich projektów.
W końcu, dla rozwoju, idę do mojego katalogu projektu i odpalam włóczęgę, który mówi doker-compose do (w końcu budować) uruchamiać kontenery doków.
Ja wciąż próbuje dowiedzieć się, jak to będzie działać w zakresie wdrożenia do produkcji.
do wdrażania do produkcji, powszechną praktyką jest dostarczanie obrazów Döcker do zespołu ops, publikując je na prywatnejdocker registry.Możesz umieścić taki rejestr w swojej własnej infrastrukturze lub korzystać z usług online, które je zapewnia, takich jak Docker Hub.
Udostępniamy również zespół operacyjny w postaci pliku docker-compose.yml
, który definiuje sposób uruchamiania kontenerów i łączenia ich. Zauważ, że ten plik nie powinien używać instrukcji build:
, ale zamiast tego polegaj na instrukcji image:
. Kto chce budować/kompilować rzeczy podczas wdrażania do produkcji?
Ten numer Docker blog article może pomóc w określeniu sposobu korzystania z funkcji dokowania i roota w doku do wdrożenia w klastrze.
Świetna odpowiedź, dziękuję bardzo. Tylko małe dodatkowe pytanie: czy w Vagrant używasz skrzynki lub dostawcy doków? – antonienko
Używam pola 'phusion/ubuntu-14.04-amd64'. Próbowałem usługodawcy dokerów, ale nie byłem zadowolony z wyniku. To było kilka miesięcy temu, więc być może teraz działa lepiej, ale korzystanie z okna dokowanego + pudełko zapewnia kontrolę. Mój Vagrantfile jest dostępny na https://github.com/thomasleveil/vagrant-phusion-docker/blob/master/Vagrantfile – Thomasleveil