使用Docker-compose进行卷安装的问题

时间:2016-08-27 01:04:39

标签: ruby-on-rails docker docker-compose

每当我对rails应用程序中的任何控制器(或一般文件)进行更改时,在docker-compose down跟随docker-compose build并最后docker-compose up运行之前,我看不到它们出现}。基本上,我必须完全重建项目并再次运行以使我的更改生效。

显示的唯一更改是对视图所做的更改。

我目前设置环境的过程是:

  1. cd到包含Dockerfile的目录
  2. 运行docker-compose build(如果尚未构建)
  3. 运行docker-compose up
  4. 我错过了什么?我正在使用Docker for Windows。

    我的docker-compose.yml如下:

    version: '2'
    services:
      db:
        image: postgres
        environment:
            POSTGRES_DB: dev
            POSTGRES_USER: user
            POSTGRES_PASSWORD: password
      web:
        build: .
        command: bundle exec rails s -p 3000 -b '0.0.0.0'
        volumes:
          - .:/myapp
        ports:
          - "3000:3000"
        depends_on:
          - db
    

    Dockerfile如下:

    FROM ruby:2.3.1
    RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
    RUN mkdir /myapp
    WORKDIR /myapp
    ADD Gemfile /myapp/Gemfile
    ADD Gemfile.lock /myapp/Gemfile.lock
    RUN bundle install
    ADD . /myapp
    

2 个答案:

答案 0 :(得分:0)

您是否尝试过在docker-compose文件中设置音量?

https://docs.docker.com/v1.8/compose/yml/#volumes

- HOST_PATH:CONTAINER_PATH

web:
  volumes:
    - ./src:/app/user/src

答案 1 :(得分:0)

您不需要在Dockerfile中创建路径:

RUN mkdir /myapp

如果你将它挂载在docker-compose.yml

volumes:
  - .:/myapp

请删除行:

ADD . /myapp

我认为这是问题 -

  

ADD指令复制新文件,目录或远程文件URL   来自并将它们添加到容器的文件系统中   路径。   (https://docs.docker.com/engine/reference/builder/#/add

所以看起来这个命令只复制文件一次而不是挂载它们。