2016-06-21 61 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看到。