0
我是新來使用docker-compose
所以我不確定我是否使用正確的方法來構建代碼中的更改。 docker-compose教程說,爲了更新代碼中的任何更改,只需進行更改並刷新鏈接,並且輸出將被刷新(在代碼自行構建之後)。這不會發生在我身上。我必須停止正在運行的docker-compose,然後運行再次構建系統的命令docker-compose up --build
。現在,我的問題是,它下載了python項目中的所有requirements
。目前這些庫的數量並不是很多,但是它們會增加,在這種情況下,一次又一次下載所有內容將非常耗時。當我只對代碼進行更改而不是requirements.txt
文件時,應該怎麼做才能避免這樣做。如何在Docker-compose中緩存構建環境
這裏是我設置的例子:
泊塢窗,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"]
對於每一個變化我做的代碼和測試它,我得走了通過所有這些步驟:
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