2016-06-21 79 views
1

我在Fedora 23中,并且使用docker-compose来构建两个容器:app和db。 我想使用该docker作为我的开发环境,但必须执行docker-compose构建,并且每次更改代码都不好。所以我在搜索并尝试“卷”选项,但我的代码不会被复制到码头。Docker-compose卷不复制任何文件

当我运行docker-build时,“RUN ls”命令没有列出“app”文件夹或它的任何文件。

观测值:在根文件夹我有:搬运工-compose.yml,的.gitignore,应用程序(文件夹),DB(文件夹)

Obs¹:如果删除了卷和working_dir选项,而是在应用程序/ Dockerfile中使用“COPY。/ app”命令,它的工作原理和我的应用程序正在运行,但我希望它能够同步我的代码。

任何人都知道如何使它工作?

我的搬运工,撰写文件是:

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: https://gist.github.com/jradesenv/d3b5c09f2fcf3a41f392d665e4ca0fb9

继承人的运行ls命令里面Dockerfile输出:

斌 boot dev etc home lib lib64 个媒体 MNT 选择 PROC 根 运行 sbin目录 SRV SYS TMP USR 变种

+0

你是如何运行docker的,它是本地的,虚拟机还是远程的? 'echo $ DOCKER_HOST' – BMitch

+0

echo $ DOCKER_HOST不输出任何内容,但是我运行docker local –

回答

1

体积被安装在容器中。 Dockerfile用于创建图像,该图像用于制作容器。这意味着Dockerfile中的RUN ls将在安装卷之前显示文件系统。如果您需要这些文件作为构建图像的一部分才能完成,它们不应该在卷中,您需要使用COPY命令复制它们,如上所述。如果你只是想证明,这些文件被安装跑步容器内,运行

docker exec $container_name ls -l/

$container_name将会像${folder_name}_app_1,你会在一个docker ps看到。