Docker撰写不更新内容

我有一些与泊坞窗运行组成的容器,但我不能find一个方法来正确地更新我的容器,而不必删除它,并再次创build它。 我有一个Python应用程序,我可以成功地部署代码更改和那些得到应用,但如果我添加文件,如CSS,JS或图像那些没有到达容器。

我已经尝试过这个命令,即使在控制台中它按预期logging了消息(重build它没有caching)我没有成功:

docker-compose build --no-cache web && docker-compose up -d 

唯一适用于我的命令就是像这样删除它:

 docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q) && docker rmi $(docker images -a -q) 

然后构build和部署:

 docker-compose build && docker-compose up -d 

这是我的docker-compose.yml:

 web: restart: always build: ./web expose: - "8000" links: - postgres:postgres - redis volumes: - /usr/src/app/donare/static env_file: .env command: /usr/local/bin/gunicorn -w 2 -b :8000 --limit-request-line 16384 donare.app:app nginx: restart: always build: ./nginx/ ports: - "80:80" volumes: - /www/static volumes_from: - web links: - web:web data: restart: always image: postgres:latest volumes: - /var/lib/postgresql command: "true" postgres: restart: always build: . dockerfile: dockerfile-postgres volumes_from: - data ports: - "5432:5432" redis: image: redis celery: build: ./web command: celery worker --app=donare.tasks.tasks volumes: - .:/code links: - postgres - redis 

您的Docker Compose文件显示您在web容器中有一个指定的卷。 /usr/src/app/donare/static你的css,js和图像应该来自你的Docker主机? 如果是这样,也许你打算把/usr/src/app/donare/static到你的容器中,而不是用这个名字创build一个卷? 或者,如果将css,js和图像内置到图像中,则应该只删除该命名的卷。

假设你的css,js和图像位于容器的/usr/src/app/donare/staticpath中,那么发生的是因为你有一个命名的卷,第一次运行web服务时,正在创build并用该path的内容进行初始化。 每当你进行build up ,相同的初始卷将被安装在旧文件的path上。 当你stoprm ,音量也被隐式地删除,导致它被重新创build并用新文件初始化。