我认为我不理解。首先,我创建了Docker机器:
$ docker-machine create -d virtualbox dev
$ eval $(docker-machine env dev)
然后我编写了Dockerfile文件和docker-compose.yml文件:
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
最后,我构建并启动了镜像:
$ docker-compose build --no-cache
$ docker-compose start
我检查了我的虚拟机的IP地址。
$ docker-machine ip dev
我在浏览器中成功打开了该网站。但是当我在代码中做出一些更改时,什么也没有发生。因此,我登录到“dev”机器:
$ docker-machine ssh dev
但我没有找到我的代码!所以我登录到docker的"web"镜像:
$ docker exec -it project_web_1 bash
有一段代码,但是没有改变。
Docker-machine是用来做什么的?有什么作用?为什么Docker在代码修改后不同步文件呢?看起来像是Docker + docker-machine + docker-compose 对于本地开发来说很麻烦 :-)
谢谢。
docker-machine use default
比起eval $(...)
更加方便。 - steppo