如何在Docker-compose中caching构buildenv

我是新来使用docker-compose所以我不知道如果我正在使用正确的方法来构build代码中的更改。 docker-compose教程说,为了更新代码中的任何更改,只需更改并刷新链接,并且输出将被刷新(代码自行构build之后)。 这不是为我发生的。 我必须停止正在运行的docker-compose,然后运行命令docker-compose up --build再次构build系统。 现在,我的问题是它下载了python项目中的所有requirements 。 目前这些库不是那么多,但是它们会增加,在这一点上下载一切又会花费很多时间。 当我只对代码进行更改而不是对requirements.txt文件进行更改时,应该怎么做才能避免这样做。

这是我的设置的一个例子:
泊坞窗,compose.yml

 version: '2' services: web: build: . ports: - "5000:5000" env_file: .env depends_on: - db volumes: - ./webapp:/opt/webapp db: image: postgres:latest ports: - "5432:5432" redis: image: redis:alpine ports: - "6379:6379" 

Dockerfile:

 FROM python:3.4-alpine ADD . /code WORKDIR /code RUN pip install -r requirements.txt CMD ["python", "app.py"] 

对于我在代码中进行的每一项更改并进行testing,我都必须经历以下所有步骤:

 Building web Step 1/5 : FROM python:3.4-alpine ---> 765c483d587c Step 2/5 : ADD . /code ---> ce6f587fe477 Removing intermediate container bceef7c06a89 Step 3/5 : WORKDIR /code ---> cd3f4951f718 Removing intermediate container 5022780e47eb Step 4/5 : RUN pip install -r requirements.txt ---> Running in 2dfe61c2537e Collecting flask (from -r requirements.txt (line 1)) Downloading Flask-0.12-py2.py3-none-any.whl (82kB) Collecting redis (from -r requirements.txt (line 2)) Downloading redis-2.10.5-py2.py3-none-any.whl (60kB) Collecting itsdangerous>=0.21 (from flask->-r requirements.txt (line 1)) Downloading itsdangerous-0.24.tar.gz (46kB) Collecting click>=2.0 (from flask->-r requirements.txt (line 1)) Downloading click-6.7-py2.py3-none-any.whl (71kB) Collecting Werkzeug>=0.7 (from flask->-r requirements.txt (line 1)) Downloading Werkzeug-0.11.15-py2.py3-none-any.whl (307kB) Collecting Jinja2>=2.4 (from flask->-r requirements.txt (line 1)) Downloading Jinja2-2.9.5-py2.py3-none-any.whl (340kB) Collecting MarkupSafe>=0.23 (from Jinja2>=2.4->flask->-r requirements.txt (line 1)) Downloading MarkupSafe-0.23.tar.gz Installing collected packages: itsdangerous, click, Werkzeug, MarkupSafe, Jinja2, flask, redis Running setup.py install for itsdangerous: started Running setup.py install for itsdangerous: finished with status 'done' Running setup.py install for MarkupSafe: started Running setup.py install for MarkupSafe: finished with status 'done' Successfully installed Jinja2-2.9.5 MarkupSafe-0.23 Werkzeug-0.11.15 click-6.7 flask-0.12 itsdangerous-0.24 redis-2.10.5 ---> 6adce98b4bd0 Removing intermediate container 2dfe61c2537e Step 5/5 : CMD python app.py ---> Running in 554d0f0d4635 ---> c28028d2c0de Removing intermediate container 554d0f0d4635 Successfully built c28028d2c0de Starting dockercompose_redis_1 Starting dockercompose_db_1 Recreating dockercompose_web_1 Attaching to dockercompose_db_1, dockercompose_redis_1, dockercompose_web_1 

我在这里find了我的答案。

我不得不改变这些线:

 volumes: - ./webapp:/opt/webapp 

至 :

 volumes: - .:/code 

因为这个目录是我的Dockerfile中提到的。 我也可以改变我的Dockerfile。