初级 Docker docker-撰写

Beginner Docker docker-compose

我正在经历 this tutorial 并且我已经成功地获得了筹码并且 运行。

困扰我的是,当我在我的主机上更改我的代码(在 web 服务中)时,它 确实 在我重新加载页面时自动进行更改在浏览器中。我不明白为什么要这样做。这是我的 docker-compose.yml 文件:

web:
  restart: always
  build: ./web
  expose:
    - "8000"
  links:
    - postgres:postgres
    - redis:redis
  volumes:
    - ./web:/usr/src/app
    - ./web/static:/usr/src/app/static
  env_file: .env
  environment:
    DEBUG: 'true'
  command: /usr/local/bin/gunicorn docker_django.wsgi:application -w 2 -b :8000

nginx:
  restart: always
  build: ./nginx/
  ports:
    - "80:80"
  volumes:
    - /www/static
  volumes_from:
    - web
  links:
    - web:web

postgres:
  restart: always
  image: postgres:latest
  ports:
    - "5432:5432"
  volumes:
    - pgdata:/var/lib/postgresql/data/

redis:
  restart: always
  image: redis:latest
  ports:
    - "6379:6379"
  volumes:
    - redisdata:/data

我不认为这是 gunicorn 进行重新加载,因为我相信 gunicorn 需要 --reload 标志才能真正进行热重新加载。

此行表示您正在将主机上的位置映射到 Web 容器中的位置。

  volumes:
    - ./web:/usr/src/app
    - ./web/static:/usr/src/app/static

因此,无论何时更改 .web 目录中的代码,它都会在容器内更新。如果您不希望这种情况发生,那么您需要在构建容器时复制这些目录,方法是在该容器的 Dockerfile 中指定这些目录。