Repository navigation
[BUG] Watch: docker compose watch does not show service output / container logs #11089
Copy link
Copy link
Closed
Labels
Description
Description
docker compose watch does not show service output (logs), only syncing info. Running docker compose up with same docker-compose.yml config shows service outputs normally.
Steps To Reproduce
- run docker compose watch
- see that there are no service output logs
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/ax/.docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version: v2.22.0-desktop.2
Path: /Users/ax/.docker/cli-plugins/docker-compose
dev: Docker Dev Environments (Docker Inc.)
Version: v0.1.0
Path: /Users/ax/.docker/cli-plugins/docker-dev
extension: Manages Docker extensions (Docker Inc.)
Version: v0.2.20
Path: /Users/ax/.docker/cli-plugins/docker-extension
init: Creates Docker-related starter files for your project (Docker Inc.)
Version: v0.1.0-beta.8
Path: /Users/ax/.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/ax/.docker/cli-plugins/docker-sbom
scan: Docker Scan (Docker Inc.)
Version: v0.26.0
Path: /Users/ax/.docker/cli-plugins/docker-scan
scout: Docker Scout (Docker Inc.)
Version: v1.0.7
Path: /Users/ax/.docker/cli-plugins/docker-scout
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 19
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: aarch64
CPUs: 8
Total Memory: 7.667GiB
Name: docker-desktop
ID: 4de9b5ab-74fd-479f-931e-3d876395eb3e
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
Anything else?
version: "3"
services:
app:
image: ${PROJECT_NAME}
build:
context: .
target: development
args:
- NODE_ENV=development
ports:
- 3000:3000
restart: "no"
develop:
watch:
- action: sync
path: .
target: /app
ignore:
- node_modules/
- action: rebuild
path: package.json
Reactions are currently unavailable
Activity
[-][BUG] Watch: docker compose watch does not show service output[/-][+][BUG] Watch: docker compose watch does not show service output / container logs[/+]ndeloof commentedon Oct 12, 2023
indeed,
docker compose watchis used to track changes and trigger refresh actions, but is not a replacement fordocker compose up(attached to service) ordocker compose logs. This is by design, aswatchwill show status messages, and show build logs, which would be hidden by logs.mbrevda commentedon Oct 23, 2023
If possible, it would be great if some official guidance on how to use
watch&uptogether would be made available. Is this recommended (in a script)?Axxxx0n commentedon Oct 23, 2023
I wonder the same thing. Was confused because watch also up-s services.
g0t4 commentedon Nov 2, 2023
I use two panes:
docker compose up# view my app's logsdocker compose watch# sync and rebuildAnd, if I want to interact with the service (STDIN/OUT):
docker compose watch(runsdocker compose up -dfor me)docker container attach foo-service(can send signals, i.e. Ctrl+R to reload when hot reload is insufficient)I like having two separate interfaces to each program (one is my app, one is watch actions)... it caught me off guard initially that watch doesn't show the output of services so I suppose there could be a justification to merge watch output with services like
docker compose upnormally does with multiple services.ChristophP commentedon Nov 28, 2023
I was first excited about
watchand immediately tried it out as it seemed to simplify things.However, the situation is the logs is surprising as I also hoped it would be a replacement for
compose up, especially sincewatchseems to be adevelopmentfeature and I don't see there being a strong case where on might want hot reloading for local development but not logs.It does simplify the setup due to not having to use volumes and not having to restart manually when certain things change but it does add the complexity of not having a "one-for-all" development command and having to explain to team members why they would now have to run 2 commands in 2 terminal sessions instead of 1.
I'm considering staying with the previous volume + compose up solution for now because of the missing logs. Would love to come back to
watchat some point.Maybe one solution could be if the
developandwatchblock were also respected when runningdocker compose upwith container logs and when runningdocker compose watchthey would show build logs.ndeloof commentedon Nov 28, 2023
@ChristophP did you considered having 2 terminals ? One to show you logs, the other to run watch ?
ChristophP commentedon Nov 28, 2023
Yes, I did. But for developer experience it was easier to have everything in one command as it was before with the volume + compose up combination.
I think if docker wants to provide a similar dev experience as other hot reloading tooling (vite, webpack, nodemon etc) it might make sense go into that direction of providing the logs in the same command. As this is what developers are used to from most other tools.
m3talstorm commentedon Dec 6, 2023
Was also surprised by this
g0t4 commentedon Dec 6, 2023
Was surprising too, in my experience hot reload tools tend to merge start/watch into a single command, i.e.
dotnet watchinstead ofdotnet runI was expecting
docker compose watchto replacedocker compose upas well as my work ondocker compose attach(attach logs + STDIN)! All I wanted was a replacement forupthat does even more for me! 😆skessler-incucai commentedon Jan 4, 2024
I was also expecting
docker compose watchto be a replacement fordocker compose upin development mode...bummer...
lenmazzone commentedon Jan 8, 2024
I went for the following in a Makefile:
skessler-incucai commentedon Jan 8, 2024
would be a good idea to add:
docker compose watch --logs?DerGary commentedon Feb 13, 2024
would also like to have logs in the terminal vom watch. But --logs would also be sufficient. Look at how skaffold does it.
diraneyya commentedon Apr 14, 2024
It seems that
watchreplacesupso I would like to clarify that the comment on usingwatchalong withupis both confusing and misleading.The answer is simple and has not been mentioned once in the above, all one needs to do is simply to complement the running
docker compose watchcommand with adocker compose logs --followcommand in another terminal tab from the same directory/compose file (where--followwill continue to run indefinitely and follow the log output, just as you would expect from theupcommand).Yes it would be indeed nice if we do not need to have two terminals or two terminal tabs running but I think we owe the future readers of this thread to at least mention the basic answer to the question.
PS: it seems that there has been a merge incorporating a
--watchCLI option to theupcommand, however, on my system (M2 MacBook ProDocker Compose version v2.24.6) this option/flag is not yet available. So until this is rolled out I think the answer above is sufficient and clear.lorenzogrv commentedon Apr 26, 2024
Thanks @diraneyya for pointing me on the right direction.
docker compose up --watchis available on my system with Docker Compose version v2.26.1.It does the job seamless, we can even instruct it to
docker compose up --build --watchPS: maybe https://docs.docker.com/compose/file-watch/ should note this for future reference