Skip to content

[BUG] docker compose restart doesn't execute post_start hook #13318

@fpotier

Description

@fpotier

Description

When a service is restarted using the restart subcommand the post_start hook is not run but using sequentially stop then start executes the hook as expected

Steps To Reproduce

With this compose file:

services:
  bash:
    image: bash
    command: bash -c "while true; do echo 'Running...'; sleep 60; done"
    post_start:
      - command: bash -c "echo started >> /logs"

Run the following commands

$ docker compose up -d
[+] Running 2/2
 ✔ Network tmp_default   Created                                                                                                                       0.0s 
 ✔ Container tmp-bash-1  Started                                                                                                                       0.4s 
$ docker compose exec -it bash cat /logs
started
$ docker compose restart bash
[+] Restarting 1/1
 ✔ Container tmp-bash-1  Started                                                                                                                      10.4s 
$ docker compose exec -it bash cat /logs
started
[potier_f@pc17166 tmp]$ docker compose stop bash
[+] Stopping 1/1
 ✔ Container tmp-bash-1  Stopped                                                                                                                      10.2s 
$ docker compose start bash
[+] Running 1/1
 ✔ Container tmp-bash-1  Started                                                                                                                       0.3s 
$ docker compose exec -it bash cat /logs
started
started

Compose Version

$ docker compose version
Docker Compose version v2.40.2

Docker Environment

$ docker info
Client: Docker Engine - Community
 Version:    28.5.1
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.29.1
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.40.2
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 2
  Running: 1
  Paused: 0
  Stopped: 1
 Images: 28
 Server Version: 28.5.1
 Storage Driver: overlay2
  Backing Filesystem: xfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: systemd
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
 CDI spec directories:
  /etc/cdi
  /var/run/cdi
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: b98a3aace656320842a23f4a392a33f46af97866
 runc version: v1.3.0-0-g4ca628d1
 init version: de40ad0
 Security Options:
  seccomp
   Profile: builtin
  cgroupns
 Kernel Version: 5.14.0-570.52.1.el9_6.x86_64
 Operating System: Red Hat Enterprise Linux 9.6 (Plow)
 OSType: linux
 Architecture: x86_64
 CPUs: 14
 Total Memory: 14.8GiB
 Name: pc17166.psi.ch
 ID: d802c6d3-1521-490b-8745-0b9e02c2bbbf
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Experimental: false
 Insecure Registries:
  ::1/128
  127.0.0.0/8
 Live Restore Enabled: false

Anything else?

I didn't give it a try but pre_stop hooks might also be skipped

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions