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/static
path中,那么发生的是因为你有一个命名的卷,第一次运行web
服务时,正在创build并用该path的内容进行初始化。 每当你进行build
up
,相同的初始卷将被安装在旧文件的path上。 当你stop
和rm
,音量也被隐式地删除,导致它被重新创build并用新文件初始化。