Was ist der Unterschied zwischen Docker-Maschine und Docker-Compose?
Ich glaube, ich verstehe es nicht. Zuerst habe ich eine Docker-Maschine erstellt:
$ docker-machine create -d virtualbox dev
$ eval $(docker-machine env dev)
Dann habe ich Dockerfile und docker-compose.yml geschrieben:
FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
version: '2'
services:
db:
image: postgres
web:
build: .
restart: always
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
links:
- db
um Schluss habe ich das Image erstellt und gestartet:
$ docker-compose build --no-cache
$ docker-compose start
Ich habe die IP meiner virtuellen Maschine überprüft
$ docker-machine ip dev
und öffnete die Site erfolgreich in meinem Browser. Aber als ich einige Änderungen an meinem Code vorgenommen habe, ist nichts passiert. Also habe ich mich bei der "dev" Maschine angemeldet:
$ docker-machine ssh dev
und ich habe meinen Code nicht gefunden! Also habe ich mich beim Docker "web" angemeldet:
$ docker exec -it project_web_1 bash
und es gab einen Code, aber unverändert.
Wofür ist die Docker-Maschine? Was ist der Sinn? Warum synchronisiert Docker nach Änderungen keine Dateien? Es sieht so aus, als ob Docker + Docker-Maschine + Docker-Compose die Qualen für die lokale Entwicklung sind: -)
Vielen Dank