【问题标题】:Dockerfile volume: local changes are not reflected in dockerDockerfile 卷:本地更改不会反映在 docker 中
【发布时间】:2017-04-16 10:58:50
【问题描述】:

我正在使用 docker-compose 创建一个多容器环境,其中我有一个 mongodb 实例和两个 python 应用程序。我在本地更改文件时遇到问题,但docker-compose up 没有反映我在文件中所做的更改。我做错了什么?

我的项目结构:

.
├── docker-compose.yml
├── form
│   ├── app.py
│   ├── Dockerfile
│   ├── requirements.txt
│   ├── static
│   └── templates
│       ├── form_action.html
│       └── form_sumbit.html
├── notify
│   ├── app.py
│   ├── Dockerfile
│   ├── requirements.txt
└── README

Dockerfiles 对于两个应用程序非常相似。下面给出一个:

FROM python:2.7
ADD . /notify
WORKDIR /notify
RUN pip install -r requirements.txt

这是我的 docker-compose.yml 文件:

version: '3'

services:
  db:
    image: mongo:3.0.2
    container_name: mongo
    networks:
      db_net:
        ipv4_address: 172.16.1.1


  web:
    build: form
    command: python -u app.py
    ports:
      - "5000:5000"
    volumes:
      - form:/form
    environment:
      MONGODB_HOST: 172.16.1.1
    networks:
      db_net:
        ipv4_address: 172.16.1.2

  notification:
    build: notify
    command: python -u app.py
    volumes:
      - notify:/notify
    environment:
      MONGODB_HOST: 172.16.1.1
    networks:
      db_net:
        ipv4_address: 172.16.1.3

networks:
  db_net:
    external: true

volumes:
  form:   
  notify:

这是我对docker volume ps 的输出:

local               form
local               healthcarereminder_form
local               healthcarereminder_notify
local               notify

[到目前为止我的理解:您可以看到有两个表单和通知实例,其中一个附加了项目文件夹名称。因此 docker 可能正在寻找不同文件中的更改。我不确定。]

【问题讨论】:

  • “我正在本地更改我的文件”是什么意思?你要改什么文件?

标签: docker docker-compose dockerfile docker-volume


【解决方案1】:

如果您尝试在 docker-compose 文件中挂载主机目录,请不要将 notify 声明为 VOLUME 指令。

而是将其视为本地文件夹

notification:
    build: notify
    command: python -u app.py
    volumes:
      # this points to a relative ./notify directory.
      - ./notify:/notify
    environment:
....

volumes:
  form:   
  #do not declare the volume here.
  # notify: 

当您在 docker-compose 文件的底部声明一个 VOLUME 节点时,docker 会创建一个特殊的内部目录,以便在 docker 镜像之间共享。这里有更多细节:https://docs.docker.com/engine/tutorials/dockervolumes/#add-a-data-volume

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-09
    • 2021-04-25
    • 2023-02-10
    相关资源
    最近更新 更多