Search code examples
dockerubuntusystemd

How to reload systemd service?


I have the following service defined

[Unit]
Description=Docker Compose Application Service [monitor]
Requires=docker.service
After=docker.service

[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/home/eugenekim/Documents/monitor/node-master
ExecStart=/usr/local/bin/docker-compose -f docker-compose.log.yml up -d es-log-00
ExecStop=/usr/local/bin/docker-compose -f docker-compose.log.yml down
TimeoutStartSec=0

[Install]
WantedBy=multi-user.target

The docker-compose.log.yml file has been changed and even the *.service file changed but system insists running the old definition somehow..

I've tried to run daemon-reload but it has no effect.
when I try to run

sudo systemctl reload docker-log                                                                                                                                                              14469ms
Failed to reload docker-log.service: Job type reload is not applicable for unit docker-log.service.
See system logs and 'systemctl status docker-log.service' for details.

It also does not have any effect..


Solution

  • I think you're missing ExecReload.

    [Unit]
    Description=Docker Compose Application Service [monitor]
    Requires=docker.service
    After=docker.service
    
    [Service]
    Type=oneshot
    RemainAfterExit=yes
    WorkingDirectory=/home/eugenekim/Documents/monitor/node-master
    ExecStart=/usr/local/bin/docker-compose -f docker-compose.log.yml up -d es-log-00
    # docker compose will watch for changes
    ExecReload=/usr/local/bin/docker-compose -f docker-compose.log.yml up -d es-log-00
    # or you want a force restart
    #ExecReload=/usr/local/bin/docker-compose -f docker-compose.log.yml restart es-log-00
    ExecStop=/usr/local/bin/docker-compose -f docker-compose.log.yml down
    TimeoutStartSec=0
    
    [Install]
    WantedBy=multi-user.target