compose
compose copied to clipboard
[BUG] watch does not support include/exclude per docs.
Description
The default is to ignore .git directory. I am used to VS Code devcontainers which mount in the volume and thus contain .git and thus i can work completely in my container including issuing git cli commands as well as using vs code plugins that rely on git.
Docs should either not say include/exclude or the feature should be implemented; i just converted everything over to not use dev volume mounts and after all that work i can't use it.
Excited to be able to use it though some day, will greatly simplify all the stuff we do to develop in containers
Steps To Reproduce
- add an include/exclude stanza to service yaml
- confirm it does not work by looking at the in-container file system
Compose Version
Docker Compose version v2.22.0-desktop.2
Docker Environment
Client:
Version: 24.0.6
Context: desktop-linux
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.11.2-desktop.5
Path: /Users/thomassullivan/.docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version: v2.22.0-desktop.2
Path: /Users/thomassullivan/.docker/cli-plugins/docker-compose
dev: Docker Dev Environments (Docker Inc.)
Version: v0.1.0
Path: /Users/thomassullivan/.docker/cli-plugins/docker-dev
extension: Manages Docker extensions (Docker Inc.)
Version: v0.2.20
Path: /Users/thomassullivan/.docker/cli-plugins/docker-extension
init: Creates Docker-related starter files for your project (Docker Inc.)
Version: v0.1.0-beta.8
Path: /Users/thomassullivan/.docker/cli-plugins/docker-init
sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc.)
Version: 0.6.0
Path: /Users/thomassullivan/.docker/cli-plugins/docker-sbom
scan: Docker Scan (Docker Inc.)
Version: v0.26.0
Path: /Users/thomassullivan/.docker/cli-plugins/docker-scan
scout: Docker Scout (Docker Inc.)
Version: v1.0.7
Path: /Users/thomassullivan/.docker/cli-plugins/docker-scout
Server:
Containers: 5
Running: 5
Paused: 0
Stopped: 0
Images: 26
Server Version: 24.0.6
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Using metacopy: false
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 2
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 8165feabfdfe38c65b599c4993d227328c231fca
runc version: v1.1.8-0-g82f18fe
init version: de40ad0
Security Options:
seccomp
Profile: unconfined
cgroupns
Kernel Version: 6.4.16-linuxkit
Operating System: Docker Desktop
OSType: linux
Architecture: x86_64
CPUs: 8
Total Memory: 15.63GiB
Name: docker-desktop
ID: 35181d5a-71df-4d45-963a-d0401d2248c3
Docker Root Dir: /var/lib/docker
Debug Mode: false
HTTP Proxy: http.docker.internal:3128
HTTPS Proxy: http.docker.internal:3128
No Proxy: hubproxy.docker.internal
Experimental: false
Insecure Registries:
hubproxy.docker.internal:5555
127.0.0.0/8
Live Restore Enabled: false
WARNING: daemon is not using the default seccomp profile
Anything else?
No response
watch does not support include/excludes but offers ignores
.git (and a few others) is intentionally excluded as any fiel change on your local working copy would then result in unnecessary file sync with container. watch is not an alternative implementation of dev containers, it assumes developer still work local, and just want a faster inner loop with application running latest codebase.
hey. two things
- the docs are misleading because they refer to a non existing capability
- the request is to be able to sync the .git folder, which there are plenty of reasons to sometimes do. for example, both gitpod and github codespaces will run your docker compose services, then hook up the browser-based part of VS Code's visuals to the remote, in-container plugins and in-container compilers/tools, including git, which of course depend on the presence of the .git folder within the container. syncing that should be no problem.
basically, I do have a fast inner dev loop, which exists in the container, and i could use the new native developer stanza's sync capability to make that same inner dev loop work with less volume mounting / ugly dockerfile stuff if you allowed a user to sync whatever they wish, including .git. there is also no risk, if a developer explicitly adds it and does a bunch of heavy git operations, thats on them.
vscode folks will def have a look at how their devcontainers could leverage docker-compose watch just as they already leverage docker-compose up with volume mounts for supporting in-container fast inner dev loop. but their tech relies heavily on ability to have the .git folder appear in the container fs whether mounted or synced; so without this change they won't be able to do that.
im sure eventually, more people / they would ask for this. cheers
the docs are misleading because they refer to a non existing capability
Can you please be more explicit on which capability the docs refer to?
I'm also confused about this.
watch does not support include/excludes
This is misleading. I've just seen the docs where it says to use include/exclude to override files. Still, I couldn't find any info on how to use these directives.
but offers ignores
And now this looks different from the docs. Docs don't have anything about ignore but your link has, how convenient. I hope that it at least works with ! symbol to include certain files and directories.
UPDATE: it doesn't. How are we supposed to include back files that were excluded by dockerignore? The issue is, I have certain files and directories excluded in .dockerignore and it's essentially build for production. With watch I want to add these files and folders back since they're needed for development and testing, which is not possible with the ignore you mentioned.
Why was this closed? I have this issue with .env file that I want to trigger sync+restart when changed. The docs linked were not updated and I just spent some time trying to fix tar issue (which is not included in alpine images, so I think this prerequisite should be highlighted more), then something that should have been properly validated only to find out that the official docs describe functionality that is not planned. I don't think it should have been closed before the documentation is updated.
fix tar issue (which is not included in alpine images, so I think this prerequisite should be highlighted more)
This is not the case anymore with latest release
Thanks for the doc update! Do you maintain that any way of overriding .dockerignore is not planned? I don't want to have my .env file in the image but I'd like to have it in my local dev container and have it trigger the watcher. I think this is a very common use case and I'm afraid not supporting it promotes keeping secrets in the image which is not the best security practice.
I re-opened this issue as we should support ! symbol (or any other way) so you can declare "include" rules to watch files ignored by .dockerignore, to cover such a scenario
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
ping, this would still be useful for all online docker ides! please
This issue has been automatically marked as not stale anymore due to the recent activity.