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

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

显示的唯一更改是对视图进行的更改。

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

  1. cd进入保存Dockerfile的目录
  2. 运行docker-compose构build(如果尚未构build)
  3. 运行docker – 组成

我错过了什么? 我正在使用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 

你有没有尝试在你的docker-compose文件中设置音量?

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

- HOST_PATH:CONTAINER_PATH

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

您不需要在Dockerfile中创buildpath:

 RUN mkdir /myapp 

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

 volumes: - .:/myapp 

请删除也行:

 ADD . /myapp 

我认为这是问题 –

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

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