我有一个开发环境,我正在dockerizing,我希望能够重载我的变化,而不必重建docker图像。我使用docker撰写,因为redis是我的应用程序的依赖项之一,我喜欢能够链接一个redis容器

我在docker-compose.yml中定义了两个容器:

node:
  build: ./node
  links:
    - redis
  ports:
    - "8080"
  env_file:
    - node-app.env

redis:
  image: redis
  ports:
    - "6379"

我已经在我的节点应用程序的dockerfile中添加了一个卷,但我如何在卷中挂载主机的目录,以便我对代码的所有实时编辑都反映在容器中?

这是我当前的Dockerfile:

# Set the base image to Ubuntu
FROM    node:boron

# File Author / Maintainer
MAINTAINER Amin Shah Gilani <amin@gilani.me>

# Install nodemon
RUN npm install -g nodemon

# Add a /app volume
VOLUME ["/app"]

# TODO: link the current . to /app

# Define working directory
WORKDIR /app

# Run npm install
RUN npm install

# Expose port
EXPOSE  8080

# Run app using nodemon
CMD ["nodemon", "/app/app.js"]

我的项目是这样的:

/
- docker-compose.yml
- node-app.env
- node/
  - app.js
  - Dockerfile.js

我的docker合成文件有三个容器,web、nginx和postgres。Postgres看起来是这样的:

postgres:
  container_name: postgres
  restart: always
  image: postgres:latest
  volumes:
    - ./database:/var/lib/postgresql
  ports:
    - 5432:5432

我的目标是在postgres容器中挂载一个卷,该卷对应于一个名为。/database的本地文件夹,名为/var/lib/ postgress。当我启动这些容器并将数据插入postgres时,我验证/var/lib/postgres/data/base/充满了我添加的数据(在postgres容器中),但在我的本地系统中,./database只在其中获得一个数据文件夹,即./database/data被创建,但它是空的。为什么?

注:

这表明我的上述文件应该工作。 这个人正在使用docker服务,这很有趣

更新1

根据尼克的建议,我做了一个码头工人检查,发现:

    "Mounts": [
        {
            "Source": "/Users/alex/Documents/MyApp/database",
            "Destination": "/var/lib/postgresql",
            "Mode": "rw",
            "RW": true,
            "Propagation": "rprivate"
        },
        {
            "Name": "e5bf22471215db058127109053e72e0a423d97b05a2afb4824b411322efd2c35",
            "Source": "/var/lib/docker/volumes/e5bf22471215db058127109053e72e0a423d97b05a2afb4824b411322efd2c35/_data",
            "Destination": "/var/lib/postgresql/data",
            "Driver": "local",
            "Mode": "",
            "RW": true,
            "Propagation": ""
        }
    ],

这让数据看起来像是被另一卷偷走了不是我自己写的。不知道为什么会这样。postgres映像是否为我创建了那个卷?如果是这样,是否有某种方法可以在重新启动时使用该卷而不是我正在安装的卷?否则,是否有一种好方法可以禁用其他卷并使用我自己的。/database?