Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] watch does not support include/exclude per docs. #11098

Open
tommysullivan opened this issue Oct 16, 2023 · 11 comments
Open

[BUG] watch does not support include/exclude per docs. #11098

tommysullivan opened this issue Oct 16, 2023 · 11 comments
Labels
area/watch Related with watch feature kind/bug

Comments

@tommysullivan
Copy link

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

  1. add an include/exclude stanza to service yaml
  2. 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

@ndeloof
Copy link
Contributor

ndeloof commented Oct 18, 2023

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.

@ndeloof ndeloof closed this as not planned Won't fix, can't repro, duplicate, stale Oct 18, 2023
@tommysullivan
Copy link
Author

hey. two things

  1. the docs are misleading because they refer to a non existing capability
  2. 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

@ndeloof
Copy link
Contributor

ndeloof commented Oct 18, 2023

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?

@PAXANDDOS
Copy link

PAXANDDOS commented Jan 18, 2024

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.
image

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.

@dawidstezycki
Copy link

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.

@ndeloof
Copy link
Contributor

ndeloof commented Feb 20, 2024

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

@dawidstezycki
Copy link

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.

@ndeloof
Copy link
Contributor

ndeloof commented Feb 21, 2024

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

Copy link

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.

@github-actions github-actions bot added the stale label Jul 24, 2024
@tommysullivan
Copy link
Author

ping, this would still be useful for all online docker ides! please

Copy link

stale bot commented Jul 24, 2024

This issue has been automatically marked as not stale anymore due to the recent activity.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/watch Related with watch feature kind/bug
Projects
None yet
Development

No branches or pull requests

5 participants