Make docker-compose ignore folder within volume

你。 提交于 2019-12-21 20:57:12

问题


I'm using docker-compose for a Rails setup. To sync the files, I've mounted the directory like (some of the code is omitted):

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

However, when running the app, I don't want the folder, tmp, to be synced. Adding the folder to dockerignore only solves the problem when building the docker image. How can I ignore the tmp folder from being synced between the host and guest when running docker compose?


回答1:


You can add a second volume to a sub-path. It will override the contents of the existing volume. Like so :

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

This will effectively make /app/tmp show the contents of ./empty-tmp on the host system. Instead of showing the contents of ./tmp




回答2:


You can use a data volume to store tmp, as data volumes copy in the data from the built docker image before the app directory is mounted

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



回答3:


What I ended up doing was to simply map all the folders which I wanted to sync:

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

Which seems to solve the problem



来源:https://stackoverflow.com/questions/53570499/make-docker-compose-ignore-folder-within-volume

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!