Docker撰写卷不';不要复制任何文件

Docker撰写卷不';不要复制任何文件,docker,docker-compose,dockerfile,docker-volume,Docker,Docker Compose,Dockerfile,Docker Volume,我在Fedora23中,我正在使用docker compose构建两个容器:app和db。 我想将docker用作我的开发环境,但每次更改代码时都必须执行docker compose build and up,这并不好。所以我搜索并尝试了“卷”选项,但我的代码没有复制到docker 当我运行docker build时,“run ls”命令不会列出“app”文件夹或其中的任何文件 Obs:在根文件夹中,我有:docker-compose.yml、.gitignore、app(文件夹)、db(文件夹

我在Fedora23中,我正在使用docker compose构建两个容器:app和db。 我想将docker用作我的开发环境,但每次更改代码时都必须执行docker compose build and up,这并不好。所以我搜索并尝试了“卷”选项,但我的代码没有复制到docker

当我运行docker build时,“run ls”命令不会列出“app”文件夹或其中的任何文件

Obs:在根文件夹中,我有:docker-compose.yml、.gitignore、app(文件夹)、db(文件夹)

Obsª:如果我删除了卷和工作目录选项,而是在app/Dockerfile中使用了“COPY./app”命令,它工作,我的应用正在运行,但我希望它同步我的代码

有人知道怎么做吗

我的docker撰写文件是:

version: '2'  
services:  
  app:
    build: ./app
    ports:
     - "3000:3000"
    depends_on:
     - db
    environment:
     - DATABASE_HOST=db
     - DATABASE_USER=myuser
     - DATABASE_PASSWORD=mypass
     - DATABASE_NAME=dbusuarios
     - PORT=3000
    volumes:
     - ./app:/app
    working_dir: /app
  db:
    build: ./db
    environment:
     - MYSQL_ROOT_PASSWORD=123
     - MYSQL_DATABASE=dbusuarios
     - MYSQL_USER=myuser
     - MYSQL_PASSWORD=mypass
在这里您可以看到我的应用程序容器Dockerfile:

以下是Dockerfile内的RUN ls命令的输出:

垃圾箱 靴子 发展 等 家 解放党 lib64 媒体 mnt 选择 过程 根 跑 斯宾 srv 系统 tmp usr
var

卷安装在容器中。Dockerfile用于创建图像,该图像用于创建容器。这意味着Dockerfile中的
RUN ls
将在装入卷之前显示文件系统。如果您需要将这些文件作为映像的一部分以完成构建,则它们不应位于卷中,并且您需要使用所述的
copy
命令复制它们。如果您只是想证明这些文件已装入正在运行的容器中,请运行

docker exec $container_name ls -l /

其中,
$container\u name
类似于
${folder\u name}\u app\u 1
,您将在
docker ps
中看到这两件事,您是否尝试过
版本:'3'
版本二似乎已经过时。还可以尝试将工作目录放入
Dockerfile
而不是docker compose。也许版本2中不支持它

这是我最近使用的docker compose,用于各个DockerFile中的卷和WorkDir:

version: '3'
services:
  frontend:
    build:
      context: ./frontend
      dockerfile: Dockerfile.dev
    ports:
      - 3001:3001
    volumes:
      - ./frontend:/app
    networks:
      - frontend
  backend:
    build: .
    ports:
      - 3000:3000
    volumes:
      - .:/app
    networks:
      - frontend
      - backend
    depends_on:
      - "mongo"
  mongo:
    image: mongo
    volumes:
      - ./data/db:/data/db
    ports:
      - 27017:27017
    networks:
      - backend
networks:
  frontend:
  backend:

您可以扩展或覆盖docker compose配置。请关注更多信息:

我在Windows中也遇到了同样的问题

volumes:
      - ./src/:/var/www/html
在windows
/src/
中,此语法可能无法在常规的
命令提示符下运行,因此请改用
powershell
,然后运行
docker compose up-d


如果是挂载问题,它应该可以工作。

您是如何运行docker的,它是本地的、虚拟机的还是远程的
echo$DOCKER\u主机
echo$DOCKER\u主机不输出任何内容,但我正在运行DOCKER Local以寻找从容器内部跟踪文件更改的方法,这帮助我认识到,只有在复制之后,容器才开始跟踪更改