使docker-compose忽略卷中的文件夹

时间:2018-12-01 11:53:19

标签: docker docker-compose

我正在使用docker-compose进行Rails设置。为了同步文件,我已经将目录挂载了(省略了一些代码):

app:
    build: .
    command: rails server -p 3000 -b '0.0.0.0'
    volumes:
      - .:/app

但是,在运行应用程序时,我不想同步tmp文件夹。 将文件夹添加到dockerignore仅解决构建docker映像时的问题。 运行docker compose时如何忽略tmp文件夹在主机和来宾之间进行同步?

4 个答案:

答案 0 :(得分:0)

您可以使用数据卷来存储tmp,因为在安装应用程序目录之前,数据卷会从内置的docker映像中复制数据。

volumes:
- .:/app
- /path/to/tmp

答案 1 :(得分:0)

您可以将第二个卷添加到子路径。它将覆盖现有卷的内容。像这样:

app:
    build: .
    command: rails server -p 3000 -b '0.0.0.0'
    volumes:
      - .:/app
      - ./empty-tmp:/app/tmp

这将有效地使/app/tmp在主机系统上显示./empty-tmp的内容。而不是显示./tmp

的内容

答案 2 :(得分:0)

我最终要做的是简单地映射所有要同步的文件夹:

- ./app:/app/app
- ./lib:/app/lib
- ./log:/app/log
- ./spec:/app/spec

似乎可以解决问题

答案 3 :(得分:0)

这曾经是可行的,如Add a volume to Docker, but exclude a sub-folder中所述。 docker-compose 1.25.0-rc3,文件语法v3,在那里提供的解决方案不再适合我。