【问题标题】:Docker Compose not updating contentDocker Compose 不更新内容
【发布时间】:2017-04-26 19:50:20
【问题描述】:

我有一些使用 docker compose 运行的容器,但我找不到一种方法来正确更新我的容器,而无需删除它并重新创建它。我有一个 Python 应用程序,我可以成功部署代码更改并应用这些更改,但是如果我添加诸如 css、js 或图像之类的文件,这些文件将无法进入容器。

我已尝试使用此命令,即使在控制台中它按预期记录消息(在没有缓存的情况下重建它)我没有成功:

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)

然后构建和部署:

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 docker-compose dockerfile docker-machine


    【解决方案1】:

    您的 Docker Compose 文件显示您在 web 容器中有一个命名卷。 /usr/src/app/donare/static 你的 css、js 和图像应该来自你的 Docker 主机吗?如果是这样,也许您打算将/usr/src/app/donare/static 挂载到您的容器中,而不是创建具有该名称的卷?或者,如果 css、js 和图像已内置到您的图像中,那么您可能应该只删除该命名卷。

    假设您的 css、js 和图像位于容器中的路径 /usr/src/app/donare/static,那么由于您在那里有一个命名卷,所以当您第一次运行 web 服务时,一个卷正在使用该路径中的内容创建和初始化。每次您执行buildup 时,都会将相同的初始卷安装在旧文件所在的路径上。当您 stoprm 时,该卷也被隐式删除,导致它被重新创建并使用新文件进行初始化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-05
      • 1970-01-01
      • 2022-10-05
      • 1970-01-01
      • 2020-01-21
      • 1970-01-01
      • 2018-03-29
      • 1970-01-01
      相关资源
      最近更新 更多